2013-11-29 11 views
-1

jqgrid 채우기 위해 내보기에서 호출하는 컨트롤러에서 다음 메서드가 있습니다. 이 메서드는 잘 작동하고 데이터를 반환합니다.JsonResult 객체를 jqgrid에 바인드하는 방법은 무엇입니까?

public JsonResult _FirstLook() 
{ 
    HttpResponseMessage response; 

    response = client.GetAsync("api/CasoAdverso").Result; 
    if (response.IsSuccessStatusCode) 
     { 
      IEnumerable<CasoAdverso> list = response.Content.ReadAsAsync<IEnumerable<CasoAdverso>>().Result; 

      return Json(list); 
     } 
} 

반환되는 내용을 디버깅하는 경우 구조는 아래 그림과 같습니다.

public class CasoAdverso 
{ 
    public int CAAD_Id { get; set; } 
    public string CAAD_Id_Local { get; set; } 
    public System.DateTime? CAAD_Fecha_Contacto { get; set; } 
} 

실제로 어떻게 든 데이터를 채울 수신하지만,있는 jqGrid가되지 않습니다 : 그것은 여기를 퍼 팅에 대 한 매우 큰 있기 때문에

enter image description here

나는 CasoAdverso 클래스를 요약한다 : 객체의 목록은 데이터에 표시되는 :

$(grid_selector).jqGrid({ 
datatype: "json", 
height: 250, 
mType: 'GET', 
url: "@Url.Action("_FirstLook", "CasoAdversoForm")", 
colNames: ['ID', 'ID Caso', 'Fecha Contacto Notif.'], 
     colModel: [ 
      { name: 'CAAD_Id', index: 'CAAD_Id', key: true }, 
      { name: 'CAAD_ID_Local', index: 'CAAD_ID_Local', width: 60, editable: false }, 
      { name: 'CAAD_Fecha_Contacto', index: 'CAAD_Fecha_Contacto', width: 90, editable: false, sorttype: "date", unformat: pickDate }, 
     ], 
    ... 
     }, 

내가 솔루션이있는 jqGrid에 jsonReader를 통해 올 수도 있음을 알고 있어요하지만 난 어떤 페이지를 만들 수 없습니다 컨트롤러에서 _FirstLook 메서드를 완전히 변경하지 않고 진행합니다.

제 시나리오에서는 컨트롤러에서 현재 얻고있는 것을 바인드하기 위해 jqgrid를 변경해야합니다. jqgrid에 기본적으로 필요한 것을 제공하기 위해 컨트롤러에서 몇 가지 해결 방법을 수행하지 않아도됩니다.

+0

"bind"를 정의하십시오. 예상되는 행동은 무엇입니까? 실제 행동과 어떻게 다른가요? – Saturnix

+0

이 경우 바인딩은 jsonReader를 설정하여 그리드가 JsonResult 객체의 구조와 기대하는 구조를 "링크"합니다. 예상되는 동작으로 인해 채워지고 표시 될 수 있지만 이것은 발생하지 않습니다 ... – Javier

+0

여기에 jsonreader의 예가 나와 있습니다. http://stackoverflow.com/questions/14748169/jqgrid-jsonreader-configuration – Javier

답변

2

설명 된 문제의 주된 이유는 "바인딩"이 아니라고 생각합니다. 이름이 mType 인 옵션이 없기 때문에 무시되는 mType: 'GET' 옵션을 사용합니다. 따라서 기본 옵션 값 mtype: 'GET' (대신 mtype)이 사용됩니다. 그래서 당신은 당신이 당신의 서버 코드에서 서버 측 페이징을 구현하지 않기 때문에 당신이 loadonce: true 옵션을 사용하는 것이 확인 또한 내가 당신을 추천 할 것을 mtype: 'POST'을 사용하거나

return Json(list, JsonRequestBehavior.AllowGet); 

에 선

return Json(list); 

를 교체해야 하나 . gridview: true, autoencode: true 옵션을 사용하고 height: 250 대신 height: "auto"을 사용하는 것이 좋습니다.