Как работает serializeCellData в jqGrid?

#jqgrid

#jqgrid

Вопрос:

Я думаю, что serializeCellData была бы мне полезна, но я не уверен, как это работает и где это вызывается в порядке событий. Определяет ли serializeCellData (postdata) другие параметры события rowid, cellname, value, iRow и iCol? Может ли это использоваться для добавления информации postdata, например, в afterSaveCell, чтобы теперь она принимала более 5 аргументов?

В моем коде я вношу локальные изменения в данные с помощью редактирования ячеек.

Ответ №1:

Событие serializeCellData можно использовать для настройки данных, которые будут отправляться на сервер в случае отправки ячейки. Он будет использоваться, только если для параметра cellsubmit, конечно, установлено значение «удаленный». Например, если мы сохраним ячейку с именем 'mycell' (ячейку из столбца ‘mycell’), объект {id: theRowId, mycell: cellValue} будет использоваться в качестве postdata параметра события serializeCellData. Если вы хотите, вы можете проанализировать входные данные и вернуть из serializeCellData объект, который вам нравится {rowid: theRowId, cellname:mycell, value: cellvalue} . Если вам нужен доступ к дополнительной информации, такой как iRow и iCol вы можете дополнительно реализовать beforeSubmitCell, сохраните значения параметров, которые вам нужны, в переменной во внешней области видимости, которая видна как в beforeSubmitCell, так и в serializeCellData. Затем вы можете просмотреть значения, сохраненные с помощью beforeSubmitCell внутри serializeCellData, и добавить объект, возвращенный с помощью serializeCellData.

То, что я описал выше, — это лишь некоторые замечания о том, как можно использовать событие serializeCellData. Если вместо этого вы возвращаете строку из своего обработчика событий serializeCellData для объекта, то строка будет отправлена jQuery.ajax точно так, как она есть. Итак, если вам нужно отправить данные в формате JSON на сервер, вы можете сделать следующее

 serializeCellData: function(postdata) {
    return JSON.stringify(postdata);
}
  

Таким образом, событие serializeCellData может использоваться в разных случаях и дает вам действительно полный контроль, какие именно данные будут отправлены на сервер.

Комментарии:

1. Итак, если я использую пользовательский объект serializeCellData, который вы описали выше, к cellurl будет добавлен (при условии GET) amp;id =4amp;cellname=mycellamp;value =CellValue?

2. @Andrea: Точно! Но для редактирования обычно используется HTTP POST или HTTP PUT, а не GET, потому что запросы GET могут кэшироваться, что плохо в случае редактирования.