Jquery jqgrid localReader不工作
使用情况是,我希望在客户端处理排序,在服务器端处理分页,因为记录量可能太大,我不想一次加载所有记录。 当前ui显示,因此下面的json包含它们和元数据。 page--当前页,total--总页数和记录数--总记录数 我与jqgrid进行了核对,我不明白这为什么不起作用 当数据设置为data:ret并且在localReader中指定root为数据时,ui不显示任何记录 当我将数据指定为data:ret.data但寻呼机(下一页的分页显示不起作用)时,ui显示记录 我的json数据如下所示:Jquery jqgrid localReader不工作,jquery,json,jqgrid,Jquery,Json,Jqgrid,使用情况是,我希望在客户端处理排序,在服务器端处理分页,因为记录量可能太大,我不想一次加载所有记录。 当前ui显示,因此下面的json包含它们和元数据。 page--当前页,total--总页数和记录数--总记录数 我与jqgrid进行了核对,我不明白这为什么不起作用 当数据设置为data:ret并且在localReader中指定root为数据时,ui不显示任何记录 当我将数据指定为data:ret.data但寻呼机(下一页的分页显示不起作用)时,ui显示记录 我的json数据如下所示: v
var ret={"data":[{"id":"1","firstName":"John","lastName":"Doe"},
{"id":"2","firstName":"John","lastName":"Burns"},
{"id":"3","firstName":"John","lastName":"Newman"},
{"id":"4","firstName":"Mike","lastName":"Vargas"},
{"id":"5","firstName":"David","lastName":"Taylor"}],
"page":1,"total":3,"records":24}
我的jquery如下所示:
grid.jqGrid({
datatype: "local",
data: ret,
// root:"oldcontacts",
colNames:['ID', 'First Name','Last Name'],
colModel:[
{name:'id',index:'id', key: true, width:70, sorttype:"int"},
{name:'firstName',index:'firstName', width:90},
{name:'lastName',index:'lastName', width:100}
],
localReader : {
root :"data",
page: "page",
total: "total",
records :"records"
},
search:true,
pager:'#pager',
//jsonReader: {cell:""},
rowNum: 10,
rowList: [5, 10, 20, 50],
loadonce:false,
sortname: 'id',
sortorder: 'asc',
viewrecords: true,
sortable:false,
cmTemplate: {sortable:true},//change to false if want
multiselect:true,
multiboxonly: false,
height: "100%",
caption: "Multiple search with local data",
onSelectAll:function(aRowids,isSelected){
// this is not used in this sample.. as I removed the check all button
var i, count, id;
for (i = 0, count = aRowids.length; i < count; i++) {
id = aRowids[i];
if(isSelected)
{mysel.pushObject(id);}
else
{ mysel.removeObject(id);}
}
that.set('selection',mysel);
},
gridComplete: function(){
},
onSelectRow: function (id,isSelected,e) {
//now lets tell jqgrid not to change to yellow on simple click
Ember.$('#'+id).attr("aria-selected","false");// override default selection
Ember.$('#'+id).removeClass("ui-state-highlight");// override default selection
if (e.ctrlKey){
if (isSelected){
mysel.pushObject(id);
Ember.$('#'+id).css('background','red');
}
else
{
Ember.$('#'+id).css('background','white');
mysel.removeObject(id);
}
that.set('selection',mysel);
}
},
});
grid.jqGrid({
数据类型:“本地”,
数据:ret,
//根:“旧联系人”,
colNames:['ID','First Name','Last Name'],
colModel:[
{name:'id',index:'id',key:true,width:70,sorttype:'int},
{name:'firstName',索引:'firstName',宽度:90},
{name:'lastName',索引:'lastName',宽度:100}
],
本地阅读器:{
根:“数据”,
第页:“第页”,
总计:“总计”,
记录:“记录”
},
搜索:对,
寻呼机:“#寻呼机”,
//jsonReader:{cell:},
rowNum:10,
行列表:[5,10,20,50],
loadonce:false,
sortname:'id',
排序器:“asc”,
viewrecords:是的,
可排序:false,
cmTemplate:{sortable:true},//如果需要,请更改为false
多选:对,
multiboxonly:错误,
高度:“100%”,
标题:“使用本地数据进行多次搜索”,
onSelectAll:函数(aRowids、isSelected){
//此示例中未使用此选项..因为我删除了“全部检查”按钮
变量i,计数,id;
for(i=0,count=aRowids.length;i
可能会解决您的问题?它使用数据类型:“json”
和loadonce:true
选项。在我看来,单独调用Ajax更好。通过修复loadComplete
内部的选项page
、记录
和lastpage
,以及显式调用带有相应参数的updatePage
,可以解决寻呼机的主要问题。感谢您的回复。我使用单独的ajax调用获取数据,并在将数据传递到jqgrid之前如上所述形成数据。如何在loadComplete上更新寻呼机?我试过了,但没用。。loadComplete:function(){page:“page”,total:“total”,records:“records”,grid.updatePage();},@user3630294:不客气!更改页面
,记录
和最后一页
的技巧在loadComplete
中,调用updatePage
在数据类型:“local”
的情况下有效。您需要以任何方式在onPaging
中重新加载网格。因此我认为使用datatype:“json”
和loadonce:true
将使代码更短。