获取未从jqGrid筛选的所有行

获取未从jqGrid筛选的所有行,jqgrid,Jqgrid,我在网格中有本地数据。如何获取用户使用过滤器工具栏后未删除的所有行或ID?我需要获取所有筛选的行,而不考虑分页 例如,假设我从网格中的50行开始。用户使用过滤器工具栏,行集减少到10行。如何获取这十行?您可以使用搜索工具栏的“后搜索”选项: var filteredIDs=新数组//全局变量 $+gridId.jqGridfilterToolbar,{stringResult:true,SearchOnNet:false, 后研究:功能{ filteredIDs=$+gridId.getData

我在网格中有本地数据。如何获取用户使用过滤器工具栏后未删除的所有行或ID?我需要获取所有筛选的行,而不考虑分页


例如,假设我从网格中的50行开始。用户使用过滤器工具栏,行集减少到10行。如何获取这十行?

您可以使用搜索工具栏的“后搜索”选项:

var filteredIDs=新数组//全局变量 $+gridId.jqGridfilterToolbar,{stringResult:true,SearchOnNet:false, 后研究:功能{ filteredIDs=$+gridId.getDataIDs; } };
如果要获取过滤的行而不是过滤的ID,请使用getRowData而不是GetDataID

没有直接的方法来获取您需要的信息。jqGrid内部用于过滤本地数据。的内部使用$.jgrid.from的主代码。为了在不研究所有代码的情况下获得所需的结果,我建议使用这样一个事实,即所有过滤的数据都将通过代码的see部分中的select方法$.jgrid.返回。我的建议是在数据被剪切到页面大小之前捕获数据

为此,我建议使用子分类:覆盖方法select方法$.jgrid.from。我在为和创建的示例中演示了该技术

在您的情况下,代码将是

var oldFrom=$.jgrid.from, 最后选定; $.jgrid.from=函数源,initalQuery{ var result=oldFrom.callthis,source,initalQuery, old_select=result.select; result.select=函数f{ lastSelected=old_select.callthis,f; 返回上次选中的; }; 返回结果; }; 现在,变量lastSelected将保存元素数组,这些元素是上次排序或筛选操作的结果。由于$.jgrid.from是全局的,因此数据不会连接到网格。如果页面上有多个作为一个网格,这将很不舒服。每个网格的LoadsMatte代码中的以下行可以解决这个小缺点:

loadComplete:函数{ this.p.lastSelected=lastSelected;//设置this.p.lastSelected } 通过这种方式,我们引入了新的jqGrid参数lastSelected,它将具有紧密的结构作为数据参数,但只保存最后过滤的数据

以下代码将在警报消息中显示过滤数据的ID

$getIds.clickfunction{ var filteredData=$grid.jqGrid'getGridParam','lastSelected',i,n,id=[], idName=$grid.jqGrid'getGridParam','localReader'.id; 如果过滤数据{ 对于i=0,n=filteredData.length;i 演示该方法。例如,如果一个过滤器仅过滤来自联邦快递的数据,然后单击“显示ID”按钮,则将看到有关所有过滤的信息,而不仅仅是有关当前页面上显示的数据的信息:


更新:提供新的lastSelectedData选项。请看。

总之,我找到了另一个更容易包含的答案

loadComplete: function (gridData) {
                    var isSearchPerformed = $grid.getGridParam("postData")._search;
                    if (isSearchPerformed) {
                        $("#spanFilterTotal").text(gridData.records);                        
                }
您只需要以下内容:

$.each($grid.getRowData(), function( index, value ) {
  a.push(value["COLUMN_NAME"]); //Get the selected data you want
});

问题是GetDataId和getRowData仅从当前页面获取筛选数据的ID,但希望获取所有筛选行,而不考虑分页。这是事实,很抱歉,我没有阅读“不考虑分页”部分。谢谢你,奥列格,我明白了。不管怎样,你们选择了正确的方式,你们的答案比从stackoverflow开始的人的典型答案更好。我建议您在代码查看及其链接之前包含一个空行,以获取更多详细信息。是的,我是新来的,我想帮助尽可能多的人,就像我是匿名用户时其他人间接帮助过我一样,包括你,所以再次感谢。感谢你一如既往地给出了详细的回答。我正在尝试你的解决方案。@JackB:我不确定你是否知道这一点。如果你打算奖励赏金,你应该通过点击+XX来明确地做到这一点。更多详情请参见“你是我的英雄!”!在我有机会问你之前,你已经回答了我的每一个jqGrid问题:@monitorjbl:我很高兴能帮助你。不客气!没有你我会迷路的奥列格!非常感谢您对社区的所有贡献。请在代码中添加解释。这有助于其他人更好地理解您的解决方案。