JqGrid中删除一行时在Server端获取主键
Get the primary key in Server side when delete a row in JqGrid
当我 select 要删除一行时,不确定如何在服务器端获取主键。
客户端:
jQuery(gridSelector).jqGrid({
url: API_URL + 'GetVendors',
datatype: 'json',
mtype: 'GET',
height: 'auto',
colNames: ['pkey', 'Company', 'ContactName', 'ContactPhone', 'UserName', 'UserKey', 'Active', 'FacilityId', 'ClientId', 'PhotoURL', 'PushToGP'],
colModel: [
{
name: 'pkey', index: 'pkey', width: 50, hidden: true,
formatter: 'integer'
},
{ name: 'Company', width: 120 },
{ name: 'ContactName', width: 110 },
{ name: 'ContactPhone', width: 120 },
{ name: 'UserName', align: "right", width: 90 },
{ name: 'UserKey', align: "right", width: 120, hidden: true },
{ name: 'Active', width: 50, edittype: "checkbox", editoptions: { value: "True:False" }, unformat: aceSwitch },
{ name: 'FacilityId', align: "right", width: 100, formatter: "integer" },
{ name: 'ClientID', align: "right", width: 100, formatter: "integer" },
{ name: 'PhotoURL', align: "right", width: 80 },
{ name: 'PushToGP', align: "right", width: 80, edittype: "checkbox", editoptions: { value: "True:False" }, unformat: aceSwitch }
],
cmTemplate: { autoResizable: true, editable: true },
rowNum: 10,
rowList: [10, 20, 30],
pager: pagerSelector,
sortname: 'company',
sortorder: "asc",
viewrecords: true,
jsonreader: {
root: "rows",
page: "page",
total: "total",
records: "records"
},
loadComplete: function () {
var table = this;
setTimeout(function () {
updatePagerIcons(table);
enableTooltips(table);
}, 0);
},
caption: "Vendor Managerment"
});
$(gridSelector).jqGrid('navGrid', pagerSelector,
{
//navbar options
edit: true,
editicon: 'ace-icon fa fa-pencil blue',
add: true,
addicon: 'ace-icon fa fa-plus-circle purple',
del: true,
delicon: 'ace-icon fa fa-trash-o red',
search: true,
searchicon: 'ace-icon fa fa-search orange',
refresh: true,
refreshicon: 'ace-icon fa fa-refresh green',
view: true,
viewicon: 'ace-icon fa fa-search-plus grey'
},
{
//delete record form
closeAfterDelete: true,
recreateForm: true,
mtype: 'DELETE',
delData: {
record: function () {
var sel_id = $(gridSelector).jqGrid('getGridParam', 'selrow');
var value = $(gridSelector).jqGrid('getCell', sel_id, '_id');
return value;
}
},
onclickSubmit: function (params, postdata) {
params.url = API_URL + 'DeleteVendor';
},
beforeShowForm: function (e) {
var form = $(e[0]);
if (form.data('styled')) return false;
form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />');
styleDeleteForm(form);
form.data('styled', true);
}
}
难点在服务器端,如何获取主键。
// DELETE
[System.Web.Http.HttpDelete()]
public void DeleteVendor()
{
try
{
var pkey = Convert.ToInt64(Request.Form["id"]); // here!!!
_vendorRespository.RemoveVendor(pkey);
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
}
}
我无法从服务器端代码中的 Request
获取删除行数据。 Request.Form
键只包含三个:"oper"、"id" 和 "record"。感谢您的帮助。
请尝试将 key:true 放在您的主列上,然后查看 Request.Form["id"] returns 您在服务器上的主键值边.
colModel: [
{
name: 'pkey', index: 'pkey', width: 50, key:true, hidden: true, formatter: 'integer'
},
当我 select 要删除一行时,不确定如何在服务器端获取主键。 客户端:
jQuery(gridSelector).jqGrid({
url: API_URL + 'GetVendors',
datatype: 'json',
mtype: 'GET',
height: 'auto',
colNames: ['pkey', 'Company', 'ContactName', 'ContactPhone', 'UserName', 'UserKey', 'Active', 'FacilityId', 'ClientId', 'PhotoURL', 'PushToGP'],
colModel: [
{
name: 'pkey', index: 'pkey', width: 50, hidden: true,
formatter: 'integer'
},
{ name: 'Company', width: 120 },
{ name: 'ContactName', width: 110 },
{ name: 'ContactPhone', width: 120 },
{ name: 'UserName', align: "right", width: 90 },
{ name: 'UserKey', align: "right", width: 120, hidden: true },
{ name: 'Active', width: 50, edittype: "checkbox", editoptions: { value: "True:False" }, unformat: aceSwitch },
{ name: 'FacilityId', align: "right", width: 100, formatter: "integer" },
{ name: 'ClientID', align: "right", width: 100, formatter: "integer" },
{ name: 'PhotoURL', align: "right", width: 80 },
{ name: 'PushToGP', align: "right", width: 80, edittype: "checkbox", editoptions: { value: "True:False" }, unformat: aceSwitch }
],
cmTemplate: { autoResizable: true, editable: true },
rowNum: 10,
rowList: [10, 20, 30],
pager: pagerSelector,
sortname: 'company',
sortorder: "asc",
viewrecords: true,
jsonreader: {
root: "rows",
page: "page",
total: "total",
records: "records"
},
loadComplete: function () {
var table = this;
setTimeout(function () {
updatePagerIcons(table);
enableTooltips(table);
}, 0);
},
caption: "Vendor Managerment"
});
$(gridSelector).jqGrid('navGrid', pagerSelector,
{
//navbar options
edit: true,
editicon: 'ace-icon fa fa-pencil blue',
add: true,
addicon: 'ace-icon fa fa-plus-circle purple',
del: true,
delicon: 'ace-icon fa fa-trash-o red',
search: true,
searchicon: 'ace-icon fa fa-search orange',
refresh: true,
refreshicon: 'ace-icon fa fa-refresh green',
view: true,
viewicon: 'ace-icon fa fa-search-plus grey'
},
{
//delete record form
closeAfterDelete: true,
recreateForm: true,
mtype: 'DELETE',
delData: {
record: function () {
var sel_id = $(gridSelector).jqGrid('getGridParam', 'selrow');
var value = $(gridSelector).jqGrid('getCell', sel_id, '_id');
return value;
}
},
onclickSubmit: function (params, postdata) {
params.url = API_URL + 'DeleteVendor';
},
beforeShowForm: function (e) {
var form = $(e[0]);
if (form.data('styled')) return false;
form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />');
styleDeleteForm(form);
form.data('styled', true);
}
}
难点在服务器端,如何获取主键。
// DELETE
[System.Web.Http.HttpDelete()]
public void DeleteVendor()
{
try
{
var pkey = Convert.ToInt64(Request.Form["id"]); // here!!!
_vendorRespository.RemoveVendor(pkey);
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
}
}
我无法从服务器端代码中的 Request
获取删除行数据。 Request.Form
键只包含三个:"oper"、"id" 和 "record"。感谢您的帮助。
请尝试将 key:true 放在您的主列上,然后查看 Request.Form["id"] returns 您在服务器上的主键值边.
colModel: [
{
name: 'pkey', index: 'pkey', width: 50, key:true, hidden: true, formatter: 'integer'
},