jqGrid нумерация страниц с массивом результатов - PullRequest
0 голосов
/ 20 марта 2012

Я работал с jqGrid 4.3.1, но я использую дополнительный метод javascript для заполнения моих результатов (он инкапсулирует конечную точку, которая возвращает JSON).

Есть ли способ, которым я мог бы напрямую установить количество результатов, номер страницы и доступные страницы в jQGrid и правильно ли он отображался в пейджере? И чем установить «стрелки» в пейджере для запуска моей функции gridreload ()?

Javascript:

$j('#searchResultsGrid').jqGrid({
        pager: '#gridpager',
        rowNum: 100,
        height: 415,
        width: 765,
        colNames: ['Action','First Name','Last Name','Email','Type of Record','Company','Account Name'],
        colModel: [
            {
            name:'Invite',
            index:'Invite', 
            width:50,
            align: 'center',
            sortable:false},
            {
            name: 'FirstName',
            index: 'FirstName',
            width: 75
            }, {
            name: 'LastName',
            index: 'LastName',
            width: 75
            },{
            name: 'Email',
            index: 'Email',
            width: 100
            },  {
            name: 'Type',
            index: 'Type',
            width: 75               
            },{
            name: 'Company',
            index: 'Company',
            width: 100              
            },{
            name: 'AccountName',
            index: 'AccountName',
            width: 100              
            }],
            //add the buttons for adding
        gridComplete: function(){
            ... 
            }
        }   
    });

/* Wrapper Method for Endpoint */
    methodController.searchLeadsContacts($j('#searchTerm').val(),pageNum,function(event,result){
            $j.each(result.result.searchResults, function(i, record){
              var rowData = [{
                'Id': record.Id,
                'FirstName': record.FirstName,
                'LastName': record.LastName,
                'Email': record.Email,
                'Type': record.Type,
                'Company': record.Company,
                'AccountName': record.AccountName
            }];
            $j('#searchResultsGrid').jqGrid('addRowData', record.Id, rowData[0]);
            });
            $j('#searchResultsGrid').setGridParam({ rowNum: 100 }).trigger("refresh");

HTML:

            <table id="searchResultsGrid"></table>
            <div id="gridpager"></div>  

1 Ответ

0 голосов
/ 20 марта 2012

Никогда не следует использовать старый addRowData, особенно в цикле. В дополнение к описанной вами проблеме addRowData является самым медленным способом заполнения сетки, поскольку при каждой модификации страницы необходимо пересчитывать положение всех существующих элементов на странице (даже предыдущих добавленных строк).

Что вам нужно сделать, это использовать data параметр jqGrid для создания сетки с данными. Если вы используете gridview: true (мой вариант по умолчанию), то содержимое сетки будет помещено в сетку за одну операцию.

В качестве альтернативы вы можете использовать datatype: 'jsonstring' и datastr с данными. В случае, если значение datastr может быть object , а не только строка JSON.

Если вы загружаете данные с сервера и можете использовать jQuery.ajax для передачи данных, вам следует использовать datatype: 'json'. jqGrid дает вам много возможностей для настройки, чтобы вы могли практически реализовать и запрос Ajax, который jqGrid делает для вас внутренне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...