如何从同一个asp.net-mvc控制器动作刷新两个jqGrid?

时间:2014-02-24 02:50:22

标签: asp.net-mvc jqgrid

我有2个jqGrid表,我想从同一个asp.net-mvc控制器动作刷新。现在我正在单独做这个,但它是浪费,因为两个表的原始数据源是相同的,所以我在后端运行相同的查询两次。理想情况下,我想调用mvc控制器操作一次,然后将2个不同的数据集返回给客户端。

这可以用jqGrid和asp.net-mvc吗?

2 个答案:

答案 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]);