由于我是jqGrid的新手,我对此问题非常困惑。 我的数据只显示10行。这是我的剧本;
jQuery("#list").jqGrid({
url:'dounfinish.php?q=1',
datatype: 'json',
mtype: 'POST',
closeafteredit:true,
colNames:['id','Date', 'Line','Model','Lotno','Qty','PIC'],
colModel :[
{name:'id', index:'id', hidden:true, width:55},
{name:'Date', index:'Date', width:90, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}},
{name:'Line', index:'Line', width:80, editable:true, search:true, stype:'text',searchoptions:{sopt:['cn']}},
{name:'Model', index:'Model', width:180, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}},
{name:'Lotno', index:'Lotno', width:80, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}},
{name:'Qty', index:'Qty', width:80, editable:true, search:true, stype:'text',searchoptions:{sopt:['cn']}},
{name:'PIC', index:'PIC', width:180, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}}
],
// pager: jQuery('#pager'),
gridview:true,
pager: '#pager',
width: '100%',
height: '100%',
rowNum:10,
rowList:[10,20,30],
sortname: 'Date',
sortorder: "desc",
viewrecords: true,
loadonce: true,
// imgpath: 'themes/basic/images',
caption: 'DAILY CHECK QTY',
editurl:'process3.php',
prmNames:{oper:'action',editoper:'editbaldefect',id:'def_id'}
});
案例如:
loadonce: true result View 1 - 10 of 10 --> column filter can work.
loadonce: false result View 1 - 10 of 3500 --> column filter not working.
为什么?
在开发者工具展示:
{"page":1,"total":33223,"records":"332222","rows":[]}
但是在php页面出现:
更新
我的jqgrid使用datetype : json
并且还需要loadonce : true
。我已经像这样试用了:
为什么jqgrid只检索10条记录但是这个表实际上有100.000条记录? 为什么只是这个表而另一个表可以工作。
答案 0 :(得分:5)
jqGrid最初设计为能够使用基于服务器的数据填充网格。选项loadonce: true
稍后介绍。因此,如果您不使用loadonce
(或使用loadonce: false
),则服务器负责对数据进行分页,排序和过滤。每次如果用户单击列标题以按列对数据进行排序,或者如果用户填写搜索工具栏,则将发送对服务器的新请求。如果用户更改每页的行数(在寻呼机中选择其他值为10),则还将发送对服务器的新请求。选项page
,rows
,sidx
,sord
,_search
以及filters
。将发送到服务器的参数的默认名称可以通过jqGrid的prmNames
选项进行检验(参见the documentation)。
我个人始终使用stringResult: true
的{{1}}选项。案例中filterToolbar
参数的格式与高级搜索格式相同(请参阅here)。
如果您使用filters
,则jqGrid仅从服务器获取数据一次。因此,服务器应该在响应中返回所有数据,而不依赖于jqGrid的loadonce: true
参数。服务器应该只对数据进行正确排序。服务器响应中的属性rows
,page
和total
将被忽略。将根据records
的数据重新计算相应的值。
如果您使用rows
,则jqGrid会在首次加载数据后将loadonce: true
更改为datatype
。因此,以后所有对数据进行排序,分页和过滤的请求都将在本地中实现,而无需向服务器发出任何其他请求。
因此,如果您使用"local"
并且服务器返回10行数据,则jqGrid显示loadonce: true
,因为它在服务器响应中只找到10行。