我試圖在加載時永久更新jqgrid中的單元格。我知道我可以使用setCell
,但只更新該頁面的值。如果我沒有明確地爲單元格執行另一個setCell
,則返回頁面,顯示舊值。我也嘗試過setRowData,但它似乎在做同樣的事情。我正在使用loadonce
,因爲我的方法是1)加載數據2)根據某些標準修改數據的某些值3)顯示修改的值。由於我使用loadonce
不應該有一種方法來在此會話中永久修改單元格嗎?如何更新jqgrid中的數據值
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的行爲在每種情況下都有所不同?
對不起,但我不完全理解這一點。我如何做'dataArray [索引[rowid]]。myColumn'?一個名爲personName的列的確切代碼是:dataArray [indexes [rowid]]。'personName'?因爲這導致了一個錯誤。另外,爲什麼我還必須調用setCell?如果我真的在修改數據數組,數據的未來渲染不會顯示新值嗎? – WildBill 2012-02-04 23:00:15
另外,在你的代碼中你說要調用'setCell',然後修改數據數組。數據數組應該比只有setCell可以使用的單元大得多,對嗎?每當我循環頁面,排序或過濾時,我不再需要調用setCell? – WildBill 2012-02-04 23:01:33
@WildBill:dataArray [indexes [rowid]]。personName'或'dataArray [indexes [rowid]] ['personName']'將只改變* internal * jqGrid數據,但不會改變''網格的元素。你可以修改內部數據並調用'trigger('reloadGrid')',但是'setCell'的使用更適合完全重新加載網格。 – Oleg 2012-02-04 23:06:55