Я описал здесь подробно, что вы должны делать в случае работы с сервисами RESTful.Обратный вызов onclickSubmit
является лучшим местом для динамического изменения URL-адреса и добавления к нему id
.
Текущий код jqGrid, установленный на github , устанавливает элемент DOMсетка как this
.Таким образом, вы сможете использовать следующую
onclickSubmit: function (options, postdata) {
options.url += '/' + encodeURIComponent(postdata.[this.id + "_id"]);
}
в следующей (после 4.3.1) версии jqGrid.В текущей версии jqGrid код будет примерно следующим:
var $grid = $("#eventGrid");
// set defaults for Delete form
$.extend($.jgrid.del, {
mtype: "DELETE",
reloadAfterSubmit: false
serializeDelData: function () {
return ""; // don't send and body for the HTTP DELETE
},
onclickSubmit: function (options, postdata) {
options.url += '/' + encodeURIComponent(postdata);
}
});
// set defaults for Edit and Add forms
$.extend($.jgrid.edit, {
height: 280,
reloadAfterSubmit: false,
onclickSubmit: function (options, postdata) {
// options.gbox will be like "#gbox_eventGrid"
var gridId = options.gbox.substr(6), // cut id from the gbox selector
id = postdata.[gridId + "_id"];
if (id !== "_empty") {
options.url += '/' + encodeURIComponent(id);
}
},
afterSubmit: function (responseData) {
// in case of usage reloadAfterSubmit: false it's important
// that the server returns id of the new added row
// in the simplest form the server response should just contain
// the id. In more complex response one should modify the next line
// to extract the id only from the response
return [true, '', responseData];
}
});
// create jqGrid
$grid.jqGrid({
// all other parameters
editurl: "/eventInfo" // you should use relative paths
});
// create navigator layer
$grid.jqGrid('navGrid', '#pager', {/*navGrid options*/}, { mtype: 'PUT'});
В приведенном выше коде я добавил afterSubmit
, что важно, потому что вы используете опцию reloadAfterSubmit: false
.
ПримечаниеЯ набрал в основном код выше или использовал вырезать и вставить, чтобы скопировать некоторые части из других старых ответов.Поэтому вы должны проверить приведенный выше код в вашем приложении.