jqgrid delete:没有获得价值

时间:2013-01-07 10:35:51

标签: jquery ajax jsp servlets jqgrid

我使用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中获得undefinedDeleteServlet

1 个答案:

答案 0 :(得分:3)

您以错误的方式在protID中使用url。在执行url的调用期间,用于删除操作的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
        };
    }
}

如果您考虑将mtype其他用作GET,但需要将protID设置为网址的一部分,则可以在{{{}}内动态修改url选项1}}或onclickSubmit回调。例如

beforeSubmit

您可以选择更符合您要求的方式。

相关问题