2014-12-03 2 views
0

local 데이터 유형을 사용하여 jqGrid을 사용할 수 있지만이 값은 json을 통해로드되지만 변경하는 데 문제가 있습니다.jqGrid - JSON에서 값로드

이 내 jqGrid 그래서 코드

jQuery("#grid").jqGrid({ 
     datatype: "json", 
     url: "/controller/getItems?id=2", 
     width: 1405, 
     colNames: ['id', 'surname'], 
     colModel: [ 
      { name: 'id', index: 'id', editable: false, hidden: false, hidedlg: true }, 
      { name: 'surname', index: 'surname', editable: true } 
     ], 
     onSelectRow: function (id, status, e) { 

     ... 
    }, 
    editurl: url, 

    ... 

json으로이 성공적으로 발사되어 얻을 수있는 방법이다. JSON에서

[HttpGet] 
    public ActionResult getItems(string id) 
    { 

     List<model> items = method.getItems(id); 
     string jsonText = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(items); 
     return Json(jsonText, JsonRequestBehavior.AllowGet); 

    } 

열 이름은 colModel 이름을 반환되는 json

예와 일치합니까 - 객체 jsonText 위에 포함 된 내용

[{"id":434,"surname":"Woods"}, 
{"id":435,"surname":"Adams"}] 

내가했던 것도 있나요 잘못되었거나 누락 되었습니까?

감사

+0

JS의 3 줄에 오타가 있습니까? 따옴표가 누락 된 URL입니다. –

+0

그 자리를 가져 주셔서 감사합니다, 그것은 단지 질문의 오타였습니다. – user3428422

+0

응답 헤더와 함께 응답을 게시 할 수 있습니까? –

답변

1

나는 가정이 System.Web.Script.Serialization.JavaScriptSerializer().Serialize의 사용에서의 오류입니다. 그냥 Json(items, JsonRequestBehavior.AllowGet);을 반환해야합니다. 또한 colModel에서 id 열을 제거 할 수 있습니다. id 값은 여전히 ​​읽고 rowid로 알려진 id 행의 속성 (id<tr>의 그리드 요소)의 값으로 지정됩니다. 서버 측에서 데이터 페이징을 구현하지 않았으므로 gridview: true (아직 사용하지 않은 경우)을 사용하면 성능을 향상시키고 autoencode: true을 입력하면 입력 데이터를 HTML 조각 대신 텍스트로 해석 할 수 있으므로 그리드에 loadonce: true 옵션을 추가해야합니다.

업데이트]

:

jsonReader: { 
    repeatitems: false, 
    root: function (obj) { return obj; } 
} 

하나는 여전히 추가 loadonce: true 옵션을 사용해야합니다 :있는 jqGrid 하나의 사용 이전 버전의 경우는 입력 데이터의 형식을 해당 jsonReader 매개 변수를 포함해야합니다.

+0

안녕하세요, 감사합니다. 그러나 명시된 변경을 수행하면 그리드에 데이터가로드되지 않습니다. 나는'jsonReader'를 사용하지 않고 이것이 문제가 될 수 있습니까? – user3428422

+0

@ user3428422 : 사용중인 jqGrid의 버전은 무엇입니까? 현재 버전을 사용한다면'jsonReader'가 필요 없습니다. Internet Explorer의 개발자 도구 (시작하려면 F12 키를 누르십시오) 또는 Chrome 또는 Firefox를 사용하여 HTTP 트래픽을 검사하는 것이 좋습니다. 서버로 보낼 내용과 웹 브라우저로 돌아 오는 내용을 볼 수 있습니다. 그 다음에는 문제가있는 곳이 분명해질 것입니다. – Oleg

+0

안녕하세요 @oleg - 버전은 jqGrid 4.4.4 - 2008입니다. 방화범을 사용하면 'json'이라는 응답이 위에 게시되었으므로 구문 또는 서버 오류가 없습니다. – user3428422