【问题标题】:jqGrid combobox: how to add values DynamicallyjqGrid组合框:如何动态添加值
【发布时间】:2012-12-31 14:03:33
【问题描述】:

我正在使用 JSP 和 Servlet(IDE:Eclipse,数据库:Oracle10)开发一个 Web 应用程序。 我正在使用 jqGrid 以表格格式显示记录。

我想从 servlet 获取 jqGrid 中组合框的值,到目前为止我已经完成了以下操作。

我正在访问 JSP 脚本中 Servlet 传递的数组。

<%
    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 中遇到了一个异常,我将编辑选项分配给组合框。请让我知道代码中是否有任何错误。

我的另一个问题是,有没有更好的方法从 servlet 为 jqGrid 中的组合框分配值(不使用 scriplet)?

【问题讨论】:

    标签: java jquery jsp servlets jqgrid


    【解决方案1】:

    您应该在editoptions 内使用dataUrl 而不是value 从服务器获取组合框的值。如果服务器返回 JSON 数据而不是 HTML 片段,您可以使用 buildSelect 将服务器响应从 dataUrl 转换为 jqGrid 需要的格式。确切的实现可能取决于您使用的 jqGrid 版本。您可以使用ajaxSelectOptions 将相应Ajax 请求的typedataType 从默认的“html”更改为"json"(参见here)。请参阅here buildSelect 实现的示例。

    【讨论】:

      【解决方案2】:

      使用动态数据将组合框添加到 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});
      

      Servlet

      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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-03
        • 1970-01-01
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        相关资源
        最近更新 更多