ロード時にjqgridのセルを永続的に更新しようとしています。 setCell
を使用できますが、そのページの値のみを更新することがわかります。明示的にセルを実行していない場合は、ページに戻ってください。setCell
は、古い値が表示されます。私もsetRowDataを試しましたが、同じことをしているようです。私は1)データをロードする2)いくつかの基準に基づいてデータのいくつかの値を変更する3)変更された値を表示することです私はloadonce
を使用しています。 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 [indexes [rowid]]。myColumnを実行するにはどうすればよいですか? personNameという列の正確なコードは次のようになります:dataArray [indexes [rowid]]。 'personName'?そのため、エラーが発生しました。また、なぜsetCellも呼び出す必要がありますか?データ配列を実際に変更している場合、データのレンダリングで新しい値が表示されることはありませんか? – WildBill
また、あなたのコードでは、 'setCell'を呼び出して、データ配列を変更すると言っています。データ配列は、setCellが正しく動作するセルよりもはるかに大きいはずですか?私はもはやsetCellを呼び出す必要はなく、ページ、ソート、フィルター、訂正のたびに呼び出す必要があります。 – WildBill
@WildBill: 'dataArray [indexes [rowid]]。personName'または' dataArray [indexes [rowid]] ['personName'] 'は*内部* jqGridデータのみを変更しますが、''グリッドの要素。内部データを変更して 'trigger( 'reloadGrid')を呼び出すことはできますが、' setCell'の使い方はグリッドの完全なリロードと同じです。 – Oleg