在 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。
场景是这样的: 我的脚本每秒添加一条带有 "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。