0

JSP & Servlet (IDE: Eclipse、データベース: Oracle10) を使用して Web アプリケーションを開発しています。jqGrid を使用してレコードを表形式で表示しています。

jqGridサーブレットからコンボボックスの値を取得したいので、これまでに次のことを行いました。

JSPスクリプトレットでサーブレットから渡された配列にアクセスしています。

<%
    String[] stageIDs = (String[])request.getAttribute("combo");
%>

以下は私のcolModelです:

jQuery("#list10_d").jqGrid({
            height: "100%",
            url:'ProtocolJGridServChild?q=2&action=protAction',
            datatype: "xml",
colNames:['Sr. No.','PID',  'SID'],
colModel:[{name:'srNo',index:'srNo', width:35,sortable:true},
{name:'PID',index:'PID', width:100,sortable:false,editable:true,hidden:true},
{name:'SID',index:'SID', width:100, sortable:false, editable:true, edittype:"select",editoptions:{value:<%for(int i=0;i<stageIDs.length;i++)%><%="ID:"+ stageIDs[i]+";"%>}}
],
            rowNum:2,
            rowList:[2,4,6],
            pager: '#pager10_d',
            sortname: 'PID',
            viewrecords: true,
            sortorder: "asc",
            multiselect: true,
            editurl: "MyServletName",
            caption:"CRM_PROT_ACTIONS",
}).navGrid('#pager10_d',{edit:true,add:true,del:true});

しかしfor loop line、編集オプションをコンボボックスに割り当てている場所で例外が発生しています。コードに誤りがある場合はお知らせください。

私の別の質問は、(スクリプトレットを使用せずに) サーブレットから jqGrid のコンボボックスに値を割り当てるより良い方法はありますか?

4

2 に答える 2

1

サーバーからコンボボックスの値を取得するには、editoptionsdataUrlの代わりに使用する必要があります。サーバーが HTML フラグメントではなく JSON データを返す場合は、サーバーの応答を jqGrid が必要とする形式に変換するために使用できます。正確な実装は、使用する jqGrid のバージョンによって異なります。またはを使用して、対応する Ajax リクエストをデフォルトの「html」から(こちらを参照)に変更できます。実装例はこちらをご覧ください。valuebuildSelectdataUrlajaxSelectOptionstypedataType"json"buildSelect

于 2013-01-17T09:46:25.040 に答える
0

動的データを使用してコンボボックスをjqgridに追加します。

私は次の方法を使用してそれを行いました。

jQuery("#list10_d").jqGrid({
        height: "100%",
        url:'ProtocolJGridServChild?q=2&action=protAction',
        datatype: "xml",
colNames:['Sr. No.','PID',  'SID'],
colModel:[{name:'srNo',index:'srNo', width:35,sortable:true},
{name:'PID',index:'PID', width:100,sortable:false,editable:true,hidden:true},
{name:'SID',index:'SID', width:100,sortable:false,editable:true,edittype:"select",editoptions: {dataUrl: 'MyServletURL?action=comboSID'}},
],
        rowNum:2,
        rowList:[2,4,6],
        pager: '#pager10_d',
        sortname: 'PID',
        viewrecords: true,
        sortorder: "asc",
        multiselect: true,
        editurl: "MyServletName",
        caption:"CRM_PROT_ACTIONS",
}).navGrid('#pager10_d',{edit:true,add:true,del:true});

サーブレット

if(request.getParameter("action").equalsIgnoreCase("comboSID"))
{
        String s[][] = select.getData("select SID from TABLE_NAME_HERE where PID='"+ param +"'"); //returns 2D array
        StringBuffer strBuf = new StringBuffer();
        strBuf.append("<select>");
        for(int i=0;i<s.length;i++)
        {
            strBuf.append("<option>");
            strBuf.append(s[i][0]);
            strBuf.append("</option>");
        }
        strBuf.append("</select>");
        out.println(strBuf);
}
于 2013-01-17T11:06:31.133 に答える