我使用JSP和Servlet(IDE:Eclipse,数据库:Oracle10)开发Web应用程序。
我JQGRID用来以表格格式显示数据。我还希望在中添加,编辑,删除功能JQGRID。到目前为止,我已经完成了“编辑功能”。
JQGRID
现在我需要Delete功能,问题是我不能pass data from JQGRID to servlet。
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。
protID
undefined
DeleteServlet
您可以使用protID在url以错误的方式。在执行的调用过程中,url将设置 一次 用于Delete操作的option 值navGrid。目前,您尚未为变量设置任何值protID。您可以修复你可以使用一个来自以下几个方面的代码:onclickSubmit,delData,beforeSubmit或serializeDelData。
url
navGrid
onclickSubmit
delData
beforeSubmit
serializeDelData
使用mtype: 'GET'选项进行删除操作会使我有些受伤。在这种情况下,通常使用HTTP POST或HTTP DELETE。如果您真的需要mtype: 'GET'可以更换
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 }; } }
如果您确实考虑将mtypeother用作GET,但需要将其设置protID为URL的一部分,则可以url在onclickSubmit或beforeSubmit回调内动态修改选项。例如
mtype
GET
{ mtype: 'GET', onclickSubmit: function (options, rowid) { var rowData = jQuery(this).jqGrid('getRowData', rowid); options.url = 'ProtocolJGridServChildStages?' + jQuery.param({ action: 'protocolStageDelete', protID: ret.PROTOCOL_ID }); } }
您可以选择自己的方式更好地满足您的要求。