我有2个jqGrid表,我想从同一个asp.net-mvc控制器动作刷新。现在我正在单独做这个,但它是浪费,因为两个表的原始数据源是相同的,所以我在后端运行相同的查询两次。理想情况下,我想调用mvc控制器操作一次,然后将2个不同的数据集返回给客户端。
这可以用jqGrid和asp.net-mvc吗?
答案 0 :(得分:2)
我建议你使用一个带有datatype: "json"
和loadonce: true
选项的网格(我将其命名为“第一个网格”)和另一个带有datatype: "local"
的网格。来自服务器的响应应包含两个部分:一个包含完整数据(所有页面)用于第一个网格,第二个包含完整 >第二个网格的数据。可以将第一个网格的root
jsonReader
属性配置为处理第一个部分。第一个网格的回调beforeProcessing
可用于清除第二个网格,设置data
参数并重新加载第二个网格。方案中beforeProcessing
的优点仅在Ajax调用服务器的情况下执行。例如,loadComplete
也将在本地排序或分页上执行。可以定义第二个网格的“刷新”按钮,以便将第一个网格的datatype
设置为"json"
,然后触发第一个的“reloadGrid” 网格。第一个网格navGrid
的调用(添加“刷新”按钮)应包含beforeRefresh
回调,将datatype
重置为"json"
。所有刷新网格的方式都是刷新服务器上的数据而不是本地重新加载。
实施上述方案将满足您的所有需求。由于使用loadonce: true
,您还将减少URL的调用次数并改善两个网格的责任。在排序的情况下,两个网格中的数据的分页和过滤/搜索将由jqGrid在本地实现。没有服务器调用,非常快速的分页,排序和过滤。
答案 1 :(得分:0)
您可以从操作返回JSON数据,并使用本地数据类型填充两个网格,如下所示。 该示例来自数组数据选项卡下的http://trirand.com/blog/jqgrid/jqgrid.html。
编辑:嗯,刚看到这也是sumit在评论中的想法。
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]);