2012-06-14 62 views
1

在我的MVC3應用程序中,我使用一個controller actionresult來返回兩組Json數據傳遞給我視圖中的兩個單獨的jqGrid。ASP.NET MVC3從控制器返回多個數據集到jqGrid

控制器的的ActionResult的迴歸看起來像:

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

其中A和B是從LINQ獲得SQL查詢的數據陣列。

我必須在我的視圖jquery jqGrids,第一個應該接受我的結果的「部分A」的數據,第二個網格應該接受我的結果「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」的填充不同請求將被完成。因此,在一個行動中將兩個響應組合起來將沒有任何優勢。

此外,如果用戶點擊例如「#GridA」列'Name'的列標題,則會發送更多請求到URL "/MyController/MyActionresult"。在請求中,參數sord的值在初始請求中將是「desc」而不是「asc」。如果用戶將頁面大小從250更改爲500或者用戶更改了需要顯示的頁面,則也會發送對服務器的新請求。

我試着解釋一下,對頁面上的所有網格都有單獨的操作是有意義的。如果不是所有的數據都會顯示出來,並且如果你實現了服務器端排序和分頁功能,那麼這種組合方式並沒有多大意義。

相關問題