私はこの問題で立ち往生しています。サブグリッドを持つグリッドがあります。列のセル値を編集すると、関数はすべてのサブグリッド行を通過し、その列からすべての値を取得して、このサブグリッドを開く親行の列の値を変更します。
ここに私の関数コードがあります:
function reloadGrid(rowid, dataResponse) {
$('#' + rowid).parent().trigger('reloadGrid');
}
function calculate(rowid, cellname, value, iRow, iCol) {
var id = $.jgrid.stripPref("_" + $.jgrid.stripPref(subGrid.getGridParam('idPrefix'), rowid), rowid);
id = $.jgrid.stripPref("s_", id);
var ids = subGrid.getDataIDs();
var result = 0.0;
for (var i = 0; i < ids.length; i++) {
result = result + parseFloat(subGrid.getCell(ids[i], 'value'));
}
grid.setCell(id, 'Total', result);
reloadGrid(rowid);
}
の後にこれを使用しようとしましたsetCell
が、値が自動的に変更された場合ではなく、セルを編集した場合にのみ機能するようです。
grid.saveRow(id, function(){alert("It works!");}, 'foo/edit.html?identifier=' + grid.getCell(id, 'identifier'));
私が望むのは、セルの値が変更された後にサブグリッドを開く親行を保存することです。
前もって感謝します。
PS:grid
およびsubGrid
変数は JS の先頭で定義されます。これらの変数を含むものを説明する必要はないと思います...
アップデート
すでに解決しました、とにかくすべてに感謝します。
私がしていることは、現在編集中の行でrow_id
親グリッドを取得することです。$.jgrid.stripRef(...)
関数を使用して、編集したサブグリッド データを保存するたびimport
に、サブグリッドの列からすべての値を取得して合計する関数を呼び出します。合計値を取得したらgrid.editCell(row_id, 'total', sumResult)
、フォームを介して行う場合と
同じように、編集したデータを送信する場所に呼び出しをvar data = grid.getRowData(row_id)
行うだけです。ajax
URL
$.ajax({
url: 'foo/edit.html?identifier=' + data.identifier,
type: 'PUT',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
data: JSON.stringify(data),
success: null,
error: function(jqXHR, status, errorText) {
alert("HTTP Status code: " + jqXHR.status + "\nStatus text: "
+ status + "\nError: " + errorText);
}
});
それが私がやりたかったことです。明確かどうかはわかりませんが、解決策があります。誰かが何かを理解していない場合は、質問してください。;)