在 JQgrid 中添加新记录后过滤行

Filter rows after adding new record in JQgrid

场景是这样的: 我的脚本每秒添加一条带有 "setInterval" 函数的新记录:

$("#grid").jqGrid('addRowData', id, data, 'first').trigger("reloadGrid");

假设当此脚本添加新记录时,用户应用了一些过滤器,但过滤器不适用于新记录,实际上它仅适用于在过滤器操作之前添加的记录,因此我的网格显示意外结果。

我的网格关键选项:

...
datatype: "local",
data: gridData, //a local array
...

这个问题在我看来很简单。你做的几乎都正确,但你应该明白并非所有 jQuery 方法都是 return 的原始 jQuery 对象。例如 $("#grid").jqGrid("getGridParam", "selrow") returns 所选行的 rowid 或 null,因此 $("#grid").jqGrid("getGridParam", "selrow").trigger("reloadGrid"); 将不正确。

方法addRowData return 布尔值,通知该行是否已成功添加。所以你必须将代码修复为

$("#grid").jqGrid("addRowData", id, data, "first");
$("#grid").trigger("reloadGrid");

或到

var $grid = $("#grid");
$grid.jqGrid("addRowData", id, data, "first");
$grid.trigger("reloadGrid", { current: true });

保存当前选择的row/rows。