我使用JSP& amp;开发Web应用程序Servlet(IDE:Eclipse,数据库:Oracle10)。
我正在使用JQGRID
以表格格式显示数据。我还想要JQGRID
中的添加,编辑,删除功能。到目前为止,我已经完成了编辑功能。
现在我想要Delete
功能,问题是我无法pass data from JQGRID to servlet
。
以下是我的源代码:
jQuery("#list10_d2").jqGrid({
height: "100%",
url:'ProtocolJGridServChildStages?q=2&action=protStages',
datatype: "xml",
colNames:['Sr. No.','PROTOCOL_ID', 'STAGE_ID', 'DESCRIPTION'],
colModel:[{name:'srNo',index:'srNo', width:35,sortable:true},
{name:'PROTOCOL_ID',index:'PROTOCOL_ID', width:100,sortable:false},
{name:'STAGE_ID',index:'STAGE_ID', width:100,sortable:false},
{name:'DESCRIPTION',index:'DESCRIPTION', width:150,sortable:false,editable:true}
],
rowNum:5,
rowList:[2,4,10],
pager: '#pager10_d2',
sortname: 'PROTOCOL_ID',
viewrecords: true,
sortorder: "asc",
multiselect: true,
editurl: "ProtocolJGridServChildStages?action=protocolStageEdit",
caption:"CRM_PROT_STAGES",
onSelectRow: function(ids)
{
if(ids && ids!==lastsel)
{
var ret = jQuery("#list10_d2").jqGrid('getRowData',ids);
protID = ret.PROTOCOL_ID;
alert(protID);
stageID = ret.STAGE_ID;
alert(stageID);
jQuery("#list10_d2").jqGrid('setGridParam',{}, {editurl:'ProtocolJGridServChildStages?action=protocolStageEdit&protID='+protID+'&stageID='+stageID});
jQuery('#list10_d2').jqGrid('restoreRow',lastsel);
jQuery('#list10_d2').jqGrid('editRow',ids,true);
lastsel=ids;
}
}
});
jQuery("#list10_d2").jqGrid('navGrid','#pager10_d2',{add:true,edit:true,del:true},{width:500},{width:500,url: 'ProtocolJGridServChildStages?action=protocolStageAdd&protID='+protID, closeAfterAdd: true},{mtype: 'GET',url: 'ProtocolJGridServChildStages?action=protocolStageDelete&protID='+protID});
jQuery("#ms1").click( function() {
var s;
s = jQuery("#list10_d2").jqGrid('getGridParam','selarrrow');
alert(s);
});
我在protID
中获得undefined
值DeleteServlet
。
答案 0 :(得分:3)
您以错误的方式在protID
中使用url
。在执行url
的调用期间,用于删除操作的navGrid
选项的值将设置为一次。目前您还没有为变量protID
设置任何值。您可以通过以下方式修复可以使用的代码:onclickSubmit
,delData
,beforeSubmit
或serializeDelData
。
我有点使用mtype: 'GET'
选项进行删除操作。通常,在这种情况下使用HTTP POST或HTTP DELETE。如果您真的需要mtype: 'GET'
,可以替换
{
mtype: 'GET',
url: 'ProtocolJGridServChildStages?action=protocolStageDelete&protID=' + protID
}
navGrid
到
{
mtype: 'GET',
url: 'ProtocolJGridServChildStages',
delData: {
action: 'protocolStageDelete',
protID: function () {
return protID;
}
}
}
或者
{
mtype: 'GET',
url: 'ProtocolJGridServChildStages',
onclickSubmit: function (options, rowid) {
var rowData = jQuery(this).jqGrid('getRowData', rowid);
return {
action: 'protocolStageDelete',
protID: ret.PROTOCOL_ID
};
}
}
如果您考虑将mtype
其他用作GET
,但需要将protID
设置为网址的一部分,则可以在{{{}}内动态修改url
选项1}}或onclickSubmit
回调。例如
beforeSubmit
您可以选择更符合您要求的方式。