我已经使用loadonce:true
实现了一个JQGrid表,如下所示:
jQuery("#list").jqGrid({
datatype: 'jsonstring',
datastr : maVarJSON,
colNames:['AA','BB', 'CC','DD','EE','FF'],
colModel :[
{name:'invid', index:'invid', align:'center'},
{name:'invdate', index:'invdate'},
{name:'amount', index:'amount', align:'right'},
{name:'tax', index:'tax', align:'right'},
{name:'total', index:'total', align:'right'},
{name:'note', index:'note'}
],
pager: jQuery('#pager'),
rowNum: 50,
rowList: [50, 100],
caption: '',
height: 470,
width: 1000,
loadonce: true
});
jQuery("#list").jqGrid('filterToolbar',{afterSearch: function(){
var rowsFiltered = jQuery("#list").getRowData();
}});
我的问题是:
我在maVarJSON
中有500行。我看到50行和10页。我决定过滤我的AA列。只有100行接受此过滤器。所以,我看到50行和2页
我会得到100行数据。 (方法jQuery("#list").getRowData()
只给我50个第一行数据。)
由于
答案 0 :(得分:1)
您只会将搜索到的所有页面中的行推送到obj.items对象:
var obj = new Object();
var numpages = jQuery(id).getGridParam('lastpage');
obj.items = new Array();
var realname = id.split("_");
realname = "input_jqGridPager_" + realname[1];
var curpage = jQuery('#'+realname);
curpage = curpage.children('input');
curpage = curpage[0].value;
for (var i = 1; i <= numpages; i++)
{
jQuery(id).trigger("reloadGrid",[{page:i}]);
selRowIds = jQuery(id).jqGrid ('getRowData');
obj.count = selRowIds.length;
for(elem in selRowIds) {
obj.items.push(selRowIds[elem]);
}
}
jQuery(id).trigger("reloadGrid",[{page:curpage}]);
答案 1 :(得分:0)
方法getRowData
仅从当前页面获取数据。如果您需要获取所有网格数据,可以使用getGridParam
获取'data'
参数并获取所有网格数据。我真的不明白你想对afterSearch
回调中的数据做什么。 filterToolbar
的目标是为用户显示数据,而不是让您使用JavaScript界面来过滤某些JavaScript数据。
顺便说一下,您可以删除默认的caption: ''
选项,移除loadonce: true
,对于包含datatype: 'jsonstring'
的本地数据,将忽略该选项,并将pager: jQuery('#pager')
选项替换为{{1} }}。如果您使用pager: '#pager'
,jqGrid必须在内部将其转换为pager: jQuery('#pager')
。