小编典典

jqgrid delete:没有价值

jsp

我使用JSP和Servlet(IDE:Eclipse,数据库:Oracle10)开发Web应用程序。

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


阅读 309

收藏
2020-06-08

共1个答案

小编典典

您可以使用protIDurl以错误的方式。在执行的调用过程中,url将设置 一次 用于Delete操作的option
navGrid。目前,您尚未为变量设置任何值protID。您可以修复你可以使用一个来自以下几个方面的代码:onclickSubmitdelDatabeforeSubmitserializeDelData

使用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
        };
    }
}

如果您确实考虑将mtypeother用作GET,但需要将其设置protID为URL的一部分,则可以urlonclickSubmitbeforeSubmit回调内动态修改选项。例如

{
    mtype: 'GET',
    onclickSubmit: function (options, rowid) {
        var rowData = jQuery(this).jqGrid('getRowData', rowid);
        options.url = 'ProtocolJGridServChildStages?' + jQuery.param({
            action: 'protocolStageDelete',
            protID: ret.PROTOCOL_ID
        });
    }
}

您可以选择自己的方式更好地满足您的要求。

2020-06-08