Обратный вызов aftersavefunc
из editRow будет вызван после и после редактирования. На данный момент вы не найдете $('#' + rowID + '_Kood')
. Более того, postData
не будет изменено во время встроенного редактирования, поэтому $grid.jqGrid('getGridParam', 'postData')
не даст вам никакой полезной информации.
Поэтому я рекомендую выложить обратно все необходимые данные в качестве ответа от editurl
. Например, столбцы, значения которых по умолчанию рассчитываются сервером, например, отметка времени последнего редактирования, можно отправить обратно. Ответ операции Add должен дополнительно содержать id
, сгенерированный сервером. Вы можете использовать setRowData
или setCell
для изменения данных в сетке после получения ответа от сервера.
Например, Вы можете вернуть
{"Id": "DB_Id", "Kood": "new Kood value"}
с сервера в качестве ответа на операцию «Добавить» и возврата
{"Kood": "new Kood value"}
как ответ на операцию «Редактировать». В случае, если код afterSaveFuncAfterAdd
может быть похож на следующий
var afterSaveFunc = function (rowId, response) {
var data = $.parseJSON(response.responseText);
if ($.isPlainObject(data) && typeof data.Kood !== "undefined") {
if (typeof data.Id !== "undefined") {
// if we have 'Id' column in the grid we have to update the column
// together with the value of `Kood`
$(this).jqGrid('setRowData', rowId, { Id: data.Id, Kood: data.Kood });
// if we have no additional `Id` we can update the Kood column only with
// the statement like below
// $(this).jqGrid('setCell', rowId, 'Kood', data.Kood);
// in case of "Add" operation we have to update the row Id
$('#' + $.jgrid.jqID(rowId)).attr('id', data.Id);
} else {
$(this).jqGrid('setCell', rowId, 'Kood', data.Kood);
}
}
}