【问题标题】:JQGrid and Result searchJQGrid 和结果搜索
【发布时间】:2012-03-14 09:26:48
【问题描述】:

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

谢谢

【问题讨论】:

    标签: javascript jqgrid


    【解决方案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}]);
    

    【讨论】:

      【解决方案2】:

      getRowData 方法仅从 当前 页面获取数据。如果您需要获取所有网格数据,您可以使用getGridParam 获取'data' 参数并获取所有 网格数据。我真的不明白你想对afterSearch 回调中的数据做什么。 filterToolbar 的目标是为用户显示数据,而不是让你的 JavaScript 界面过滤一些 JavaScript 数据。

      顺便说一句,您可以删除默认的caption: '' 选项,删除loadonce: true 这将被本地数据包括datatype: 'jsonstring' 忽略并将pager: jQuery('#pager') 选项替换为pager: '#pager'。如果您要使用pager: jQuery('#pager'),jq​​Grid 必须在内部将其转换为pager: '#pager'

      【讨论】:

      • 感谢您的回答。事实上,对象(由 rows 表示;1 object=1 row)也显示在我的应用程序的 google map div 中。所以,我想显示/隐藏这些接受/不接受过滤器的对象。
      • @user1268560:对不起,我还是不明白你想要什么。要“接受/不接受过滤器”,您可能应该使用beforeSearch 而不是afterSearch。您可以分析 filter 而不是数据。请参阅the answer 中的示例。如果您对rowNum: 50 有一些问题,您可以增加该值。无论如何,我建议您添加 gridview: true 以获得更好的网格性能。
      • 我已将 gridview 添加为 true。这个例子帮助我做我想做的事。非常感谢。
      • @livoo:不客气!如果问题解决了,您可以将答案标记为"accepted"
      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      相关资源
      最近更新 更多