JQGrid和Result搜索

时间:2012-03-14 09:26:49

标签: javascript jqgrid

我已经使用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个第一行数据。)

由于

2 个答案:

答案 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')