0

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価値を得ています。undefinedDeleteServlet

4

1 に答える 1

3

間違った方法で使用protIDします。削除操作に使用されるオプションurlの値は、 の呼び出しの実行中に一度設定されます。現時点では、変数の値をまだ設定していません。、、またはのいずれかの方法で使用できるコードを修正できます。urlnavGridprotIDonclickSubmitdelDatabeforeSubmitserializeDelData

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 を as として使用することを検討しているが、URL の一部としてGET設定する必要がある場合は、またはコールバック内でオプションを動的に変更できます。例えばprotIDurlonclickSubmitbeforeSubmit

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

要件により適した方法を選択できます。

于 2013-01-07T11:33:01.653 に答える