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

我正在尝试在加载时永久更新jqgrid中的一个单元格.我知道我可以使用setCell,但只能更新该页面的值.如果我不显示为单元格显示一个setCell,则返回页面,显示旧值.我也尝试过setRowData,但它似乎在做同样的事情.我正在使用loadonce,因为我的方法是1)加载数据2)根据一些标准修改数据的几个值3)显示修改的值.因为我正在使用loadonce不应该有一种方式在这个会话中永久修改一个单元格?

更新:

放入我的代码,没有给出错误,但没有遍历所有数据:

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,则警报(j)返回30,尽管我已经在本地加载了多少个项目.但是,如果刷新图形,j是正确的数字.为什么getGridParam的行为在每种情况下都不同?

解决方法

如果使用loadonce:true,应该知道jqgrid将保存本地数据. jqgrid有两个选项:data和_index.数据是每个项目的名称属性作为colModel列的name属性的项目数组.如果您需要通过id(rowid)找到该项目,则可以使用_index [rowid]到数据数组中的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',newValue);

// Now change the internal local data
myGrid.jqgrid('getLocalRow',rowid).myColumn = newValue;

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...