我有2個jqGrid表,我想刷新然後從相同的asp.net-mvc控制器操作。現在我單獨做這件事,但它浪費了,因爲兩個表的數據的原始來源都是相同的,所以我在後端運行兩次相同的查詢。理想情況下,我想調用一次mvc控制器操作,然後將2個不同的數據集返回給客戶端。如何從同一個asp.net-mvc控制器動作刷新兩個jqGrid?
這可能與jqGrid和asp.net-mvc?
我有2個jqGrid表,我想刷新然後從相同的asp.net-mvc控制器操作。現在我單獨做這件事,但它浪費了,因爲兩個表的數據的原始來源都是相同的,所以我在後端運行兩次相同的查詢。理想情況下,我想調用一次mvc控制器操作,然後將2個不同的數據集返回給客戶端。如何從同一個asp.net-mvc控制器動作刷新兩個jqGrid?
這可能與jqGrid和asp.net-mvc?
我會建議你使用一個網格datatype: "json"
和loadonce: true
選項(我命名爲「第一個網格」後),並與另一datatype: "local"
格。從服務器的響應應該包含部分:一部分與第一網格全數據(所有頁面),第二個與全數據爲第二格。第一個網格的jsonReader
的root
屬性可以配置爲處理第一個部分。第一個網格的回調beforeProcessing
可用於清除第二個網格,設置data
參數並重新加載第二個網格。場景中beforeProcessing
的優勢僅在Ajax調用服務器的情況下執行。例如loadComplete
也會在本地排序或分頁執行。可以定義第二個網格的「刷新」按鈕,使其將datatype
的的第一個網格設置爲"json"
,然後觸發「reloadGrid」的網格的第一個。第一個網格(添加「刷新」按鈕)navGrid
的調用應包含beforeRefresh
回調,其中重置datatype
到"json"
。在所有網格刷新的方式將刷新從服務器的數據,而不是本地重新加載。
上述場景的實現將完成您所需的一切。由於使用loadonce: true
,您還將額外減少URL的調用次數並改善兩個網格的責任。在這種情況下,jqGrid將在本地執行本地對這兩個網格中的數據進行排序,尋呼和過濾/搜索。沒有服務器的調用,非常快速的分頁,排序和過濾。
您可以從操作返回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]);
我想你必須使用一次調用你的動作,獲取兩個數據集,然後使用本地數據集作爲jqgrid上的數據類型。如果你的行動不需要很長時間,最好採取兩種不同的行動。 – Sumit
請發佈您的控制器操作並刷新您的帖子上的電話。 –
你在網格中使用'loadonce:true'選項嗎?將在網格中顯示的數據集中有多少行總數?如果在後端處理查詢相對較慢(昂貴),並且**至少一個來自網格**的總數不是很大(<1000或10000行),那麼將會推薦使用'loadonce:true'。在這種情況下,您可以輕鬆實現您在問題中詢問的場景。 – Oleg