2012-11-08 2 views
0

서버 끝에서 C#을 사용하고 jSON을 그리드에 전달하는 열 모델을 생성 중입니다. 이제 하나의 열에 드롭 다운 기능을 제공하고 싶습니다. 여기 jqgrid에서 C#의 드롭 다운 옵션 설정

StringBuilder deptDetails = new StringBuilder(); 
foreach (Department dept in departmentList) 
{ 
    deptDetails.Append(dept.DepartmentID); 
    deptDetails.Append(":'"); 
    deptDetails.Append(":'" + dept.DepartmentName + "',"); 
    deptDetails.Append(','); 
} 
deptDetails.Length -= 1; 

colModel[i] = new ColumnMod 
{ 
    name = selectedItems[i].ToString(), 
    index = selectedItems[i].ToString(), 
    width = 100, 
    editable = true, 
    edittype = "select", 
    align = "left", 
    editoptions="{value:{" + deptDetails + "}}" 
}; 

내 컬럼 모델 클래스입니다 : :하지만 밖으로 작동하지 않습니다, 이것은 내가 지금까지 무엇을 가지고

public class ColumnMod 
{ 
    public string name { get; set; } 
    public string index { get; set; } 
    //public Boolean key { get; set; } 
    public Int32 width { get; set; } 
    public Boolean editable { get; set; } 
    public string edittype { get; set; } 
    //public Boolean sortable { get; set; } 
    public string align { get; set; } 
    //public Boolean hidden { get; set; } 
    public string editoptions { get; set; } 
} 

편집 :

:

여기

내 JS 코드

$grid.jqGrid({ 
    colNames: selectedItems, 
    colModel: columnSelected, 
    sortname: selectedValues[0], 
    sortorder: "asc", 
    editurl: 'url', 
    cellsubmit: 'clientArray', 
    cellEdit: true, 
    rowNum: 5000, 
    rownumbers: true, 
    rownumWidth: 30, 
    autowidth: true, 
    shrinkToFit: true, 
    gridview: true, 
    pager: '#gridPager', 
    viewrecords: true, 
    recordtext: "Total Rows: {2}", 
    jsonReader: { 
     root: "rows", 
     page: "page", 
     total: "totalpages", 
     records: "totalrecords", 
     cell: "cell", 
     id: selectedValues[0], //index of the column with the PK in it 
     userdata: "userdata", 
     repeatitems: true 
    }, 
    prmNames: { 
     rows: "numRows", 
     page: "page", 
     sort: "sortField", 
     order: "sortOrder" 
    }, 
    datatype: function (postdata) { 
     if (lastSortField != postdata.sortField || lastSortOrder != postdata.sortOrder) 
     { if (!$('#btnValidate').is(':disabled')) { 
       lastSortField = postdata.sortField; 
       lastSortOrder = postdata.sortOrder; 
      } 
     } 
    } 

다음은 columnModel에서 값을 얻는 방법입니다.

function getSelectedColumnsJSON(selectedValues) { 
try { 
    $.ajax({ 
     type: "POST", 
     url: window.location.protocol + '//' + window.location.host + window.location.pathname + "/getSelectedColumnsJSON", 
     data: $.toJSON({ 
      selectedItems: selectedValues 
     }), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: false, 
     success: function (data, status) { 
      if (data.d) 
       columnSelected = data.d; 
     }, 
     error: function (error) { 
      ShowMessage(error.responseText); 
     } 
    }); 
} 
catch (ex) { 
    ShowMessage(ex.message); 
} 

}

내가 드롭 다운이 열에서 선택 받고 있습니다 만, 비어, 나는 here ..any 도움을 설명하는 형식을 따르도록 노력했다?

+0

여기에 자바 스크립트 코드와 마크 업을 게시 할 수 있습니까? – testCoder

+0

게시물이 수정되었습니다. – faizanjehangir

답변

1

격자를 채우는 데 사용하는 인 을 게시하지 않았기 때문에 문제가 제대로 이해되는지 잘 모르겠습니다. 입력 데이터에 DepartmentID 또는 DepartmentName 값을 게시 하시겠습니까? 아마도 formatter:'select'을 추가로 사용해야하고 기존 문제가 해결 될 것입니까?

구현해야 할 전체 시나리오를 이해할 수 없지만 value 속성 대신 editoptions 대신 dataUrl을 사용하는 것이 좋습니다. 아마도 value 속성을 사용해야하는 유일한 경우는 formatter:'select'입니다. 서버에서 반환 된 데이터에 문자열 데이터 대신 ID가 포함 된 경우에만 dataUrl 옵션을 사용할 수 없습니다.

+0

나는 게시물을 편집했다. 나는이 갖고 싶어 : faizanjehangir

+0

@faizanjehangir : 당신은 내 주요 질문에없는 답 않습니다. "하나의 열에 드롭 다운 기능을 제공하고 싶습니다."및 "열에 드롭 다운 선택을 가져 오지만 비어 있습니다"라고 썼습니다. 편집 중 ** 드롭 다운이 필요합니까 **? 또한 코드 조각을 게시하고 서버 응답에 * 데이터가 인코딩되는 방법을 게시하지 않았습니다. 'ColumnMod'의'editoptions' 속성에서 생성 한 데이터를 인코딩하는 것에 달려 있습니다. **'editoptions' 속성의 타입은 객체이어야하며 문자열이 아니어야합니다. ** – Oleg

+0

문자열보다는 객체를 사용할 때 작동했습니다 ... 고마워요! – faizanjehangir