我已经创建了一个ging uing jqgrid,并且我正在使用表单对话框来添加,编辑和删除记录。
但在Edit Record i want to pass the id of a record along with the url
中,即使表单数据将包含相应ID,i am using RESTful url so to update a record i have to pass
。如下
www.example.com/eventInfo/10 , Method is PUT
到目前为止我已经尝试了
jQuery("#eventGrid").jqGrid('navGrid','#pager', {}, //options
{
height:280,
reloadAfterSubmit:false ,
// How can i add Event id over here from grid
url:'http://www.eample.com/evenInfo',
mtype:'PUT'
}, // edit options
{
height:280,
reloadAfterSubmit:false
}, // add options
{
reloadAfterSubmit:false
}, // del options
{
} // search options
);
此外,我想以JSON格式向服务器发送数据,而不是作为表单数据
答案 0 :(得分:1)
我描述了here详细说明了在使用RESTful服务时应该做些什么。回调onclickSubmit
是动态修改网址并将id
附加到其中的最佳位置。
github上的jqGrid的当前代码将网格的DOM元素设置为this
。所以你将能够使用以下
onclickSubmit: function (options, postdata) {
options.url += '/' + encodeURIComponent(postdata.[this.id + "_id"]);
}
在jqGrid的下一个(4.3.1之后)版本中。在当前版本的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
选项。
备注:我主要键入上面的代码或使用cut& amp;粘贴以从另一个旧答案复制一些部分。所以你应该在你的应用程序中测试上面的代码。