jqGrid分页结果数组

时间:2012-03-19 22:13:11

标签: jquery jqgrid

我一直在使用qith jqGrid 4.3.1,但是我使用了一个额外的javascript方法来填充我的结果(它封装了返回JSON的端点)。

有没有办法可以直接在jQGrid中设置结果数,页码和可用页面,并让它正确显示在寻呼机中?然后在寻呼机中设置'箭头'来触发我的'gridreload function()'?

使用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 :(得分:0)

你永远不应该在循环中使用旧的addRowData。除了您描述的问题addRowData是填充网格的最慢方法,因为在页面的每次修改时,都应重新计算页面上所有现有元素的位置(甚至是先前添加的行)。

您应该使用jqGrid的data参数来创建包含数据的网格。如果您使用gridview: true(我的默认选项),则网格的包含将在一次操作中放置在网格中。

或者,您可以对数据使用datatype: 'jsonstring'datastr。在这种情况下,datastr的值可以是对象,而不仅仅是JSON字符串。

如果您从服务器加载数据并可以使用jQuery.ajax传输数据,则应使用datatype: 'json'。 jqGrid为您提供了很多自定义功能,因此您可以实现jqGrid为您的内部实现的Ajax请求。