Я решил написать свой ответ только потому, что Джейк Физель написал ". В его ответе есть только одно значение для редактирования и удаления: 'editurl' ". Я думаю, что есть много способов, и лучший зависит от других требований.
Обычно данные, отправляемые на сервер, состоят из частей дерева
- Тип HTTP-запроса, такой как POST, PUT или DELETE
- Часть URL до '?' символ
- Параметры URL до после «?» символ
- Тело HTTP-запроса
По умолчанию jqGrid использует HTTP-запрос POST и помещает информацию об идентификаторе (или разделенном запятыми списке идентификаторов в случае multiselect: true
) в теле HTTP-запроса. Если вы измените тип HTTP-запроса, вам может потребоваться изменить место информации, которую вы отправляете на сервер, например, с тела на URL. В случае использования сервисов RESTful на стороне сервера следует использовать HTTP DELETE для операции удаления и иметь пустое тело в регистре.
В любом случае можно использовать некоторые функции обратного вызова (события), чтобы заполнить дополнительную информацию о редактировании или удалении строки. Внутри функций обратного вызова можно использовать методы getRowData
или getCell
, чтобы получить дополнительную информацию для других ячеек строки удаления или редактирования. Иногда зависит от конкретной ситуации, какие методы не будут работать. Это будет в случае редактирования ячейки встроенного редактирования, если вы попытаетесь получить информацию из ячейки, в которой изменяются значения на <input>
, <select>
или другие элементы управления во время редактирования. В этом случае существуют другие приемы, которые можно использовать в качестве обходного пути (см., Например, здесь ).
Один из способов - изменить URL-адрес внутри onSelectRow
, так как один удаляет или редактирует последнюю выбранную строку. Я бы использовал $(this)
вместо $("#jqGridTable")
.
Другой способ - изменить url
внутри onclickSubmit
(см. здесь и здесь ).
В обоих случаях я бы порекомендовал использовать , только если нужно изменить часть URL до '?' символ . Если вам нужно просто добавить дополнительные параметры к URL-адресу, например paramNama=paramValue
, разделенное на &
, лучше использовать вместо них параметры editData или delData . Параметры могут содержать функции. См. здесь или здесь .
Если вам нужно изменить тело запросов, которые вы можете использовать serializeDelData
или serializeEditData
.
Таким образом, есть много способов, и наилучший способ зависит от ваших других требований.