2012-06-14 2 views
1

MVC3 응용 프로그램에서 두 개의 Json 데이터 집합을 반환하여 두 개의 개별 jqGrid 집합을 내 뷰에서 반환합니다. 컨트롤러의 actionresult의ASP.NET MVC3 컨트롤러에서 jqGrid로 다중 데이터 집합 반환

반환 보이는 같은 : A와 B는 SQL 쿼리에 LINQ에서 얻어진 데이터의 배열 인

return Json(new 
     { 
      A= holderA, 
      B= holderB 
     },JsonRequestBehavior.AllowGet); 

.

내보기에서 jqGrids를 jquery해야하며 첫 번째 결과는 내 결과의 "Part A"의 데이터를 받아 들여야하며 두 번째 눈금은 내 결과의 "Part B"의 데이터를 받아 들여야합니다.

나는 데이터가 어디에서 오는 당신이 참조 할 수 있습니다 특정 옵션이,있는 jqGrid 내 actionresult (즉, A와 B)의 각 개별 구성 요소에 액세스하는 방법을 알 필요가?

는 여기에 도움이 하나의 그리드의 모습 인 경우 ...

jQuery("#GridA").jqGrid({ 
     url: "/MyController/MyActionresult", 
     datatype: 'json', 
     postData: { 
      Name: function() { 
       return $("#Name").val(); 
      }, 
      Year: function() { 
       return $("#SelectedYear").val() 
      } 
     }, 

     mtype: 'POST', 
     colNames: ['Name', 'Age', 'Total'] 
     colModel: [ 

       { name: 'Name', index: 'Name', align: 'left' }, 
       { name: 'Age', index: 'Age', align: 'left' }, 
       { name: 'Total', index: 'Total', width: 150, align: 'left', search: false }], 
     pager: jQuery('#GridAPager'), 
     rowNum: 250, 
     height: 250, 
     rowList: [250, 500, 1000, 2000], 
     sortname: 'Name', 
     sortorder: "asc", 
     viewrecords: true, 
     hiddengrid: false, 
     caption: 'List of People', 
     gridComplete: function() { 
      onGridComplete("#GridA");} 
    }); 
    $("#GridA").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true }); 
}); 

그리고 두 번째 그리드는 약간 다른 필드가 표시되는 거의 동일하다.

하나의 actionresult에서 두 데이터 세트를 다시 전달하려는 이유는 폼 제출 버튼을 클릭하면 두 개의 그리드가 채워지기 때문입니다.

어떤 도움이 좋을 것,

감사합니다.

답변

1

데이터의 정확한 형식을 알고있는 것이 중요합니다 (holderAholderB). 데이터 구조에 해당하는 jsonReader을 정의해야합니다.

당신은 당신이하고자하는 옵션 mtype: 'POST'를 사용하는 경우 반환 된 데이터 캐시 할 수없고 "#GridA"와 "#GridB"의 충전을 위해 다른 요청이 수행 될 것임을 이해해야한다. 따라서 하나의 액션에서 두 개의 응답을 결합하면 이점이 없습니다.

또한 예를 들어 사용자가 "Name"열의 "#GridA"를 클릭하면 추가 요청이 URL "/MyController/MyActionresult"으로 전송됩니다. 요청에서 매개 변수 sord의 값은 초기 요청에서 "오름차순"대신 "desc"가됩니다. 사용자가 페이지 크기를 250에서 500으로 변경하거나 사용자가 표시해야 할 페이지를 변경하는 경우 서버에 대한 새 요청이 전송됩니다.

페이지에있는 모든 그리드에 대해 별도의 조치를 취해야한다고 설명했습니다. 모든 것을 하나로 결합하는 것은 모든 데이터가 표시되지 않는지, 서버 측 정렬 및 페이징이 구현되었는지에 대해별로 의미가 없습니다.

관련 문제