jqGrid客户端排序数据消失

时间:2011-04-20 20:31:25

标签: jqgrid

  

可能重复:
  jqgrid client side sorting with server side paging - data disappears

我有一个jqGrid并尝试启用客户端排序w /服务器端分页。如果loadonce:true,则客户端排序将起作用,但分页将不起作用。 如果loadonce:false并且我尝试排序,则数据将从网格中消失。我缺少什么想法?

  jQuery("#grid").jqGrid({
            url: getUrl(), // url w/ querystring params
            datatype: 'json',
            mtype: "GET",
            colNames: ['Name', 'Title', 'Office'],
            colModel:
            [
                { name: 'Employee.EmployeeName', index: 'Employee.EmployeeName', sortable: true, sorttype: 'text' },
                { name: 'Employee.EmployeeTitle', index: 'Employee.EmployeeTitle', sortable: true, sorttype: 'text'},
                { name: 'Employee.EmployeeOffice', index: 'Employee.EmployeeOffice', sortable: true, sorttype: 'text' }
            ],
            width: 600,
            height: 'auto',
            scrollOffset: 0,
            rowNum: 5,
            pager: jQuery("#pager"),
            rowList: [10, 25, 50],
            sortname: 'Employee.EmployeeName',
            sortorder: "asc",
            loadtext: "Loading....",
            emptyrecords: "No records to view",
            //loadonce: true, // client side sorting works but paging doesn't work
            sortable: true, 
            viewrecords: true,                                
            jsonReader: {
                repeatitems: false
            },
            loadComplete: function () {
                jQuery("#grid").jqGrid('setGridParam', { datatype: 'local' });
                jQuery("#grid").trigger("reloadGrid");
            },
            onPaging: function () {
                jQuery("#grid").jqGrid('setGridParam', { datatype: 'json' });                
            }
        });

2 个答案:

答案 0 :(得分:0)

根据我的经验,如果使用JQGrid事件在JQGrid中执行任何服务器端操作,则必须在服务器上重新创建数据并将其重新绑定到JQGrid控件。这意味着您必须捕获排序信息并对其进行说明。 Trirand论坛(http://www.trirand.net/forum/)由JQGrid的作者监控。你可以在那里得到更好的帮助。

答案 1 :(得分:0)

如果loadonce:true,客户端排序将起作用,但分页也能正常工作。

$(document).ready(function() {
   $("#user-list").jqGrid({
      datatype: "local", 
      height: "auto",
      autowidth: true,
      ignoreCase: true,
      colNames: ['Emp Id', 'First Name', 'Last Name'],
      colModel: [ 
                  {name:'emp_id', index:'emp_id', width:55, sorttype:"int"}, 
                  {name:'first_name',index:'first_name', width:160, sorttype:"text"}, 
                  {name:'last_name',index:'last_name', width:160, sorttype:"text"},
                ],
      pager: '#user-list-pager',
      rowNum:10,
      rowList:[10,25,50,100],
      sortname: 'first_name',
      sortorder: 'asc',
      viewrecords: true,
      caption: 'Users',
      data:<%= raw @users_jqgrid_data.to_json %>
   });
   jQuery("#user-list").jqGrid('navGrid','#user-list-pager',{del:false,add:false,edit:false},{},{},{},{multipleSearch:true}); 

} );  

我只是尝试了一个小代码,分页和排序在这里工作正常。它帮助

感谢名单