i’m starter in jqGrid, i want Implement Delete Actin in jqGrid I writing this Code For Fill jqGrid
$(function () {
var grid = $('#list');
grid.jqGrid({
url: 'jQGridHandler.ashx',
postData: { ActionPage: 'TransportType', Action: 'Fill' },
ajaxGridOptions: { cache: false },
loadonce: true,
direction: "rtl",
datatype: 'json',
height: 490,
colNames: ['Code', 'TransportType', 'TransportTypeAbbr', 'Remark'],
colModel: [
{ name: 'TRANSPORT_ID', width: 100, sortable: true, editable: true },
{ name: 'TRANSPORT_NAME', width: 200, sortable: true, editable: true },
{ name: 'TRANSPORT_ABBR', width: 100, sortable: true, editable: true },
{ name: 'REMARK', width: 100, sortable: true, editable: true }
],
gridview: true,
rowNum: 20,
rowList: [20, 40, 60],
pager: '#pager',
sortname: 'TRANSPORT_ID',
viewrecords: true,
sortorder: 'ASC',
caption: '',
rownumbers: true
});
grid.jqGrid('navGrid', '#pager', { add: true, edit: true, del: true },
{ height: 300, width: 300, url: "JQGridHandler.ashx?ActionPage=TransportType&Action=Update", reloadAfterSubmit: false },
{ height: 400, width: 500, url: "JQGridHandler.ashx?ActionPage=TransportType&Action=Insert", reloadAfterSubmit: false },
{ url: "JQGridHandler.ashx?ActionPage=TransportType&Action=Delete", reloadAfterSubmit: false },
{ multipleSearch: true, overlay: false, width: 460 });
and in jQGridHandler i Write this code
case "TransportType":
var transport = new TransportTypesBusiness();
TRANSPORT_TYPES transportItem;
switch (request.QueryString["Action"])
{
case "Fill":
string numberOfRows = request["rows"];
string pageIndex = request["page"];
int totalRecords = 0;
output = transport.BuildJQGridResults(Int32.Parse(numberOfRows), Int32.Parse(pageIndex), totalRecords);
response.Write(output);
break;
case "FillDrop":
output = transport.BuildJQGridResults();
response.Write(output);
break;
case "Insert":
transportItem = new TRANSPORT_TYPES {
TRANSPORT_NAME = request["TRANSPORT_NAME"].ToString(),
TRANSPORT_ABBR = request["TRANSPORT_ABBR"].ToString(),
REMARK = request["REMARK"].ToString()
};
bool isInsert = transport.AddNew(transportItem);
break;
case "Update":
transportItem = new TRANSPORT_TYPES {
TRANSPORT_ID = int.Parse(request["TRANSPORT_ID"].ToString()),
TRANSPORT_NAME = request["TRANSPORT_NAME"].ToString(),
TRANSPORT_ABBR = request["TRANSPORT_ABBR"].ToString(),
REMARK = request["REMARK"].ToString()
};
bool isUpdate = transport.Update(transportItem);
break;
case "Delete":
bool isDelete =
transport.Delete(
transport.Find(c => c.TRANSPORT_ID == int.Parse(request["TRANSPORT_ID"].ToString())));
break;
}
When do I delete a record,I can not get request["TRANSPORT_ID"].ToString() value.
Please help me. thanks all
EDIT 1:
i Edit script from this
$(function () {
var grid = $('#list');
grid.jqGrid({
url: 'jQGridHandler.ashx',
postData: { ActionPage: 'TransportType', Action: 'Fill' },
ajaxGridOptions: { cache: false },
loadonce: true,
direction: "rtl",
datatype: 'json',
height: 490,
colNames: ['Code', 'TransportType', 'TransportTypeAbbr', 'Remark'],
colModel: [
{ name: 'TRANSPORT_ID', key: true,,hidden:true, editable:false },
{ name: 'TRANSPORT_NAME', width: 200, sortable: true, editable: true },
{ name: 'TRANSPORT_ABBR', width: 100, sortable: true, editable: true },
{ name: 'REMARK', width: 100, sortable: true, editable: true }
],
cmTemplate: { width: 100, editable: true },
prmNames: { oper: 'Action', editoper: 'Update', addoper: 'Insert',
deloper: 'Delete', id: 'STATUS_ID'
},
gridview: true,
rowNum: 20,
rowList: [20, 40, 60],
pager: '#pager',
sortname: 'TRANSPORT_ID',
viewrecords: true,
sortorder: 'ASC',
caption: '',
rownumbers: true
});
$.extend($.jgrid.edit, {
editData: { ActionPage: 'StatusType' },
savekey: [true, 13],
closeOnEscape: true,
closeAfterEdit: true,
closeAfterAdd: true,
reloadAfterSubmit: false,
recreateForm: true
});
grid.jqGrid('navGrid', '#pager', { add: true, edit: true, del: true },
{ height: 300, width: 300 },
{ height: 400, width: 500 },
{},
{ width: 460 });
and in handler for get
ActionPage
write this code
HttpRequest request = context.Request;
string ss = request["ActionPage"].ToString();
grid first load data but when click in edit button get error.
I suppose that the origin of your problem is that you fill rowids of the grid not correctly. Probably you do fill ids of the rows of the grid correctly, but just don’t use the information.
By the way you use
Actionparameter with the value"Insert","Update"and"Delete". On the other side there are already standard parameteroperwhich will be sent to the server (see here) during the row editing. The value ofoperparameter will be “add”, “edit” and “del”. So I see no need to use additionalActionparameter during editing. I recommend you just to test for the value ofoperparameter instead.If you do like to have another name and values of
operparameter you can use prmNames option of jqGrid to change the defaults:I don’t see any sense in the usage of
ActionPage=TransportTypeadditional parameter which you use in all URLs. If you do require to share the same URL"jQGridHandler.ashx"for some other purpose you can useediturl: "jQGridHandler.ashx"and addActionPage=TransportTypepart to URLs usingpostData,editDataanddelDataparameters.In the same way with
operparameter one more parameter with the nameidwill be send to the server during the editing operations. So you can userequest["TRANSPORT_ID"]on the server side. If you prefer another name (I don’t see that it’s really required) you can addid: "TRANSPORT_ID"property inprmNames. It will solve your main problem.So if you don’t want to make any modifications in the server code you can just do the following on the client side
I added some additional settings and used
cmTemplateto change the defaults (see here) forcolModelitems.One more important thing in your code which make a problem. You use
reloadAfterSubmit: falsesetting. In the case it’s important to return theidon the new created item in the response from the server on"Insert"operation. So use should useresponse.Write(output);to write in the body of the server response the id. Additionally you need useafterSubmit(see the answer) to get the new id from the server response and forward it to jqGrid:UPDATED: You can download the demo project from here.