jqGrid setRowData方法不更新隐藏行

jqGrid setRowData方法不更新隐藏行,jqgrid,Jqgrid,我使用jqGrid的filterToolbar方法让用户快速搜索/过滤网格数据。我在网格配置时使用loadonce:true和datatype:local。我有一个下拉选择过滤器类型为我的一列,这很好 问题是,当我试图使用setRowData更新一行时,该行不可见,因为筛选器/搜索结果隐藏了它们,当我通过清除筛选器重新显示它们时,该行不会得到更新 有什么建议吗?我也尝试过触发重新加载网格事件,运气不好 干杯 更新1-再现问题: 以下是如何使用jqGrid的官方演示重现问题: 第一步 浏览到jqG

我使用jqGrid的filterToolbar方法让用户快速搜索/过滤网格数据。我在网格配置时使用loadonce:true和datatype:local。我有一个下拉选择过滤器类型为我的一列,这很好

问题是,当我试图使用setRowData更新一行时,该行不可见,因为筛选器/搜索结果隐藏了它们,当我通过清除筛选器重新显示它们时,该行不会得到更新

有什么建议吗?我也尝试过触发重新加载网格事件,运气不好

干杯

更新1-再现问题: 以下是如何使用jqGrid的官方演示重现问题:

第一步 浏览到jqGrid的演示页面,并在“新版本3.7”下打开名为“工具栏搜索”的演示

步骤2 在演示网格中,按值为575878的代码列进行过滤,以便网格上仅显示第一行

步骤3 打开javascript控制台并更新当前不可见的行,在本例中更新第2行: jqGrid'setRowData',2,{item_id:2,item:'blargh',item_cd:12345678}

步骤4 通过清除筛选值取消隐藏所有行,并查看第2行尚未更新


我做错什么了吗?可能的解决方法?

您误解了网格的构建方式。网格可以包含隐藏列,但不能包含隐藏行。如果是一个过滤网格,则整个网格体将被删除,并且仅插入过滤后的行

setRowData方法可用于修改网格中的任何行,但不能修改网格中不存在的内容

如果使用本地网格数据类型:“local”,则保存在网格中的数据将保存在两个内部jqGrid参数data和_index中。因此,您应该修改数据对象。要用修改后的数据填充网格,需要调用.triggerreloadGrid

因此,如果要修改rowid=2的网格数据的item_id、item和item_cd列,可以执行以下步骤

1获取内部jqGrid参数数据和_索引的参考:

2获取对表示所需rowid的对象的引用:

var rowId = '2',
    itemIndex = index[rowId],
    rowItem = data[itemIndex];
3根据需要修改数据项:

rowItem.item_id = 2;
rowItem.item = 'blargh';
rowItem.item_cd = 12345678;
4如果需要,通过重新加载网格来刷新网格

$myGrid.trigger('reloadGrid');

您应该在问题中包括您使用的JavaScript代码和从服务器返回的JSON数据。之后,其他人将能够重现你的问题。通常,setRowData也可以处理隐藏数据。@Oleg我已经用步骤更新了问题,以重现问题,而且setRowData似乎不能处理隐藏行。还有其他方法更新这些隐藏行吗?你有更完整的例子吗?我无法使本地单元格数据更新保持页到页,当我返回到更新的页时,它似乎丢失了。这些设置为:loadonce:true数据类型:local等。Thx
$myGrid.trigger('reloadGrid');