我试图在加载时永久更新 jqgrid 中的单元格。我知道我可以使用setCell
但这只会更新该页面的值。如果我回到该页面,如果我没有明确执行另一个setCell
对于单元格,显示旧值。我也尝试过 setRowData 但它似乎在做同样的事情。我正在使用loadonce
因为我的方法是 1)加载数据 2)根据某些标准修改数据的一些值 3)显示修改后的值。正如我正在使用的loadonce
难道不应该有一种方法可以在此会话中永久修改单元格吗?
UPDATE:
放入我的代码,不会给出错误,但无法迭代所有数据:
var set = 0;
....
gridComplete: function(data){
setData();
},
....
beforeRefresh: function(data){
set = 0;
},
....
function setData(){
if(set == 1) return;
... //create hash up here
var dataArray = jQuery("#grid").jqGrid('getGridParam', 'data');
var j = 1;
for (var rows in dataArray) {
var key = dataArray[rows].name;
dataArray[rows].level = hashTable[key];
j++;
}
alert(j);
}
这并不是循环遍历本地加载的数组中的所有项目。例如,如果页面大小设置为 30,则alert(j)
返回 30,无论我在本地加载了多少项。但是,如果我刷新图表,j 就是正确的数字。为什么 getGridParam 的行为在每种情况下都不同?
如果你使用loadonce: true
你应该知道where本地数据将由jqGrid保存。 jqGrid 有两个选项:data
and _index
. The data
是项目数组,其中每个项目都有 name 属性作为name
列的属性来自colModel
。如果您需要通过 id (rowid) 查找项目,您可以使用_index[rowid]
到具有 rowid 的项目data
大批。所以要改变列中的数据'myColumn'
您应该执行以下操作:
// first change the cell in the visible part of grid
myGrid.jqGrid('setCell', rowid, 'myColumn', newValue);
// now change the internal local data
var dataArray = myGrid.jqGrid('getGridParam', 'data'),
indexes = myGrid.jqGrid('getGridParam', '_index');
dataArray[indexes[rowid]].myColumn = newValue;
UPDATED:您可以使用记录的获取本地行 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods修改本地数据的方法:
// first change the cell in the visible part of grid
myGrid.jqGrid('setCell', rowid, 'myColumn', newValue);
// now change the internal local data
myGrid.jqGrid('getLocalRow', rowid).myColumn = newValue;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)