我被这个问题困住了。我有一个带有子网格的网格。当我编辑列的单元格值时,我的函数会遍历所有子网格行并从该列获取所有值并更改打开此子网格的父行的列的值。
这是我的功能代码:
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);
}
});
这就是我想做的。我不知道是否清楚,但我有解决方案。如果有人不明白,就问。;)