gpt4 book ai didi

jquery - 如何更新jqgrid中的数据值

转载 作者:行者123 更新时间:2023-12-03 22:03:07 25 4
gpt4 key购买 nike

我试图在加载时永久更新 jqgrid 中的单元格。我知道我可以使用 setCell 但这只会更新该页面的值。如果我回到页面,如果我没有明确地为单元格执行另一个 setCell ,则会显示旧值。我也尝试过 setRowData 但它似乎在做同样的事情。我使用 loadonce 因为我的方法是 1) 加载数据 2) 根据某些条件修改数据的一些值 3) 显示修改后的值。由于我使用的是 loadonce,难道不应该有一种方法可以在此 session 中永久修改单元格吗?

更新:

放入我的代码,不会给出错误,但无法迭代所有数据:

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,您应该知道jqGrid将在何处保存本地数据。 jqGrid 有两个选项:data_indexdata 是项目数组,其中每个项目都具有 name 属性,作为 colModel 中列的 name 属性。如果您需要通过 id (rowid) 查找项目,可以使用 _index[rowid] 来查找 data 数组中具有 rowid 的项目。因此,要更改 '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;

更新:您可以使用记录的 getLocalRow更改本地数据的方法:

// 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;

关于jquery - 如何更新jqgrid中的数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9145163/

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