Если я правильно понимаю, вы пытаетесь отправить данные на сервер, но одно (или более) поле (я) не доступны для редактирования и зависят от вычисления других полей, например, Количество * Единица измерения.
Как Вы знаете, что недоступные для редактирования поля не публикуются на сервере и, следовательно, их нельзя сохранить. Чтобы это произошло, я вижу здесь два возможных решения.
- Выполните вычисления на сервере, не отправляя это значение из jqGrid
- Рассчитайте значение в jqGrid и отправьте его на сервер
Все они имеют свои плюсы и минусы, и я полагаю, что вы не можете сделать этот расчет на сервере.
Чтобы отправить дополнительное значение на сервер от редактирования, зависит от используемый метод редактирования - редактирование формы, встроенное редактирование или редактирование ячейки.
Ниже я опишу возможное решение со встроенным редактированием, а в качестве упражнения вы найдете его для других методов.
В jqGrid есть это механизм для публикации того, что вы хотите на сервере снова с отредактированными полями. В наших терминах мы называем это сериализацией. Эта сериализация происходит перед отправкой данных на сервер и имеет разные имена в зависимости от модуля редактирования. В случае встроенного редактирования это событие называется serializeRowData и является параметром сетки, а не параметром события.
В вашем случае код должен выглядеть следующим образом:
$("jqGrid").jqGrid({
...
serializeRowData : function( data ) {
// suppose you have Qty and Unit field and want to post Total = Qty*Unit
if(data.Qty && data.Unit) {
data.Total = data.Qty*data.Unit;
}
return data;
}
Обратите внимание на возврат в конце serializeRowData. Так что это событие выполняется каждый раз, когда вы вызываете saveRow, но это хорошо описано в документации Guriddo