2014-02-24 31 views
3

我有2個jqGrid表,我想刷新然後從相同的asp.net-mvc控制器操作。現在我單獨做這件事,但它浪費了,因爲兩個表的數據的原始來源都是相同的,所以我在後端運行兩次相同的查詢。理想情況下,我想調用一次mvc控制器操作,然後將2個不同的數據集返回給客戶端。如何從同一個asp.net-mvc控制器動作刷新兩個jqGrid?

這可能與jqGrid和asp.net-mvc?

+1

我想你必須使用一次調用你的動作,獲取兩個數據集,然後使用本地數據集作爲jqgrid上的數據類型。如果你的行動不需要很長時間,最好採取兩種不同的行動。 – Sumit

+0

請發佈您的控制器操作並刷新您的帖子上的電話。 –

+0

你在網格中使用'loadonce:true'選項嗎?將在網格中顯示的數據集中有多少行總數?如果在後端處理查詢相對較慢(昂貴),並且**至少一個來自網格**的總數不是很大(<1000或10000行),那麼將會推薦使用'loadonce:true'。在這種情況下,您可以輕鬆實現您在問題中詢問的場景。 – Oleg

回答

2

我會建議你使用一個網格datatype: "json"loadonce: true選項(我命名爲「第一個網格」後),並與另一datatype: "local"格。從服務器的響應應該包含部分:一部分與第一網格數據(所有頁面),第二個與數據爲第二格。第一個網格的jsonReaderroot屬性可以配置爲處理第一個部分。第一個網格的回調beforeProcessing可用於清除第二個網格,設置data參數並重新加載第二個網格。場景中beforeProcessing的優勢僅在Ajax調用服務器的情況下執行。例如loadComplete也會在本地排序或分頁執行。可以定義第二個網格的「刷新」按鈕,使其將datatype的第一個網格設置爲"json",然後觸發「reloadGrid」的網格的第一個。第一個網格(添加「刷新」按鈕)navGrid的調用應包含beforeRefresh回調,其中重置datatype"json"。在所有網格刷新的方式將刷新從服務器的數據,而不是本地重新加載。

上述場景的實現將完成您所需的一切。由於使用loadonce: true,您還將額外減少URL的調用次數並改善兩個網格的責任。在這種情況下,jqGrid將在本地執行本地對這兩個網格中的數據進行排序,尋呼和過濾/搜索。沒有服務器的調用,非常快速的分頁,排序和過濾。

+0

謝謝。是否有任何這種工作的示例?我正在嘗試你在說什麼,但我似乎遇到了問題。而不是問另一個問題,我會首先詢問是否有任何示例 – leora

+0

@leora:看看[演示](http://www.ok-soft-gmbh.com/jqGrid/TwoGridsInOneJson.htm)。這是我描述的實現的一個例子。 – Oleg

+0

這確實看起來像是起作用,將網格設置爲使用本地數據,然後使用JavaScript函數從mvc url同時加載兩個網格的數據是否值得? –

0

您可以從操作返回JSON數據,並使用本地數據類型填充兩個網格,如下所示。 該示例來自陣列數據選項卡下的http://trirand.com/blog/jqgrid/jqgrid.html

編輯:啊,剛纔看到這是蘇米特在評論中的想法。

jQuery("#list4").jqGrid({ 
     datatype: "local", 
     height: 250, 
     colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], 
     colModel:[ 
      {name:'id',index:'id', width:60, sorttype:"int"}, 
      {name:'invdate',index:'invdate', width:90, sorttype:"date"}, 
      {name:'name',index:'name', width:100}, 
      {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"}, 
      {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"},  
      {name:'total',index:'total', width:80,align:"right",sorttype:"float"},  
      {name:'note',index:'note', width:150, sortable:false}  
     ], 
     multiselect: true, 
     caption: "Manipulating Array Data" 
    }); 
    var mydata = [ 
      {id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
      {id:"2",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
      {id:"3",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, 
      {id:"4",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
      {id:"5",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
      {id:"6",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, 
      {id:"7",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, 
      {id:"8",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, 
      {id:"9",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"} 
      ]; 
    for(var i=0;i<=mydata.length;i++) 
     jQuery("#list4").jqGrid('addRowData',i+1,mydata[i]); 
相關問題