gpt4 book ai didi

jqgrid - 获取所有未从 jqGrid 过滤的行

转载 作者:行者123 更新时间:2023-12-04 13:04:27 25 4
gpt4 key购买 nike

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

例如,假设我从网格中的 50 行开始。用户使用过滤器工具栏,行集减少到 10 行。我怎样才能得到那十行?

最佳答案

没有直接的方法可以获取您需要的信息。 jqGrid 内部使用 $.jgrid.from过滤本地数据。使用 $.jgrid.from 的主要代码在内部 addLocalData .为了在不研究所有代码的情况下获得您需要的结果,我建议使用所有过滤数据将由 select 返回的事实。 $.jgrid.from的方法(参见代码的 the line)。我的建议是在将数据裁剪到页面大小之前捕获数据。

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

在你的情况下,代码将是

var oldFrom = $.jgrid.from,
lastSelected;

$.jgrid.from = function (source, initalQuery) {
var result = oldFrom.call(this, source, initalQuery),
old_select = result.select;
result.select = function (f) {
lastSelected = old_select.call(this, f);
return lastSelected;
};
return result;
};

现在变量 lastSelected将保存作为上次排序或过滤操作结果的元素数组。因为 $.jgrid.from是全局的,数据没有连接到网格。如果页面上有多个网格,那会很不舒服。可以在 loadComplate 的代码中使用以下行修复这个小缺点。每个网格:

loadComplete: function () {
this.p.lastSelected = lastSelected; // set this.p.lastSelected
}

在我们引入新的 jqGrid 参数 lastSelected 的方式中它将具有接近的结构 data参数,但只保存最后过滤的数据。

以下代码将显示 alert 中过滤数据的 id信息

$("#getIds").click(function () {
var filteredData = $grid.jqGrid('getGridParam', 'lastSelected'), i, n, ids = [],
idName = $grid.jqGrid('getGridParam', 'localReader').id;
if (filteredData) {
for (i = 0, n = filteredData.length; i < n; i++) {
ids.push(filteredData[i][idName]);
}
alert("tolal number of filtered data: " + n + "\n" +
"ids of filtered data:\n" + ids.join(', '));
}
});

我用过 localReader.id参数,因为用于本地数据的属性名称通常是 id_id_ . _id_如果使用 loadonce: true,将用于从服务器加载数据的情况选项。

The demo演示该方法。例如,如果仅过滤来自 FedEx 的数据,然后单击“显示 ID”按钮,则将看到有关所有过滤的信息,而不仅仅是当前页面上显示的数据:

enter image description here

enter image description here

更新 : free jqGrid提供新品 lastSelectedData选项。见 the demothe list of demos .

关于jqgrid - 获取所有未从 jqGrid 过滤的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com