2013-01-17 4 views
0

JSP & 서블릿 (IDE : Eclipse, Database : Oracle10)을 사용하여 웹 응용 프로그램을 개발 중입니다. jqGrid를 사용하여 레코드를 표 형식으로 표시하고 있습니다.jqGrid combobox : 값을 동적으로 추가하는 방법

서블릿에서 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}); 

하지만 콤보 상자에 editoptions를 할당하고 어디 for loop line에 예외를 얻고있다. 코드에 실수가 있는지 알려주세요.

또 다른 질문은 (scriplet를 사용하지 않고) 서블릿에서 jqGrid의 값을 combobox에 할당하는 더 좋은 방법이 있다는 것입니다.

답변

1

value 대신 dataUrleditoptions 안에 넣어야 서버의 콤보 박스 값을 가져와야합니다. 서버가 HTML 조각 대신 JSON 데이터를 반환하면 buildSelect을 사용하여 서버 응답을 dataUrl에서 jqGrid가 필요로하는 형식으로 변환 할 수 있습니다. 정확한 구현은 사용하는 jqGrid의 버전에 따라 달라질 수 있습니다. ajaxSelectOptions을 사용하여 해당 Ajax 요청의 type 또는 dataType을 기본 "html"에서 "json" (here 참조)으로 변경할 수 있습니다. herebuildSelect 구현 예를 참조하십시오.

+0

감사합니다 (다시 한번) .. ... – Bhushan

+0

@Bhushan : 당신은 환영합니다! – Oleg

0

나는 다음과 같은 방법을 사용하여 수행 한 .. 동적 데이터 WIH있는 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}); 

서블릿

이 dataurl를 사용하여 작동
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); 
} 
관련 문제