1

在我的 MVC3 应用程序中,我使用控制器 actionresult 返回两组 Json 数据以传递给我视图中的两个单独的 jqGrid。

控制器 actionresult 的返回如下所示:

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

其中 A 和 B 是从 LINQ to SQL 查询获得的数据数组。

我必须在我的视图中查询 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 传回两个数据集的原因是,一旦单击表单提交按钮,就会填充两个网格。

任何帮助都会很棒,

谢谢。

4

1 回答 1

1

holderA了解和中数据的确切格式很重要holderB。您应该定义与数据结构相对应的jsonReader 。

您应该了解,如果您使用该选项mtype: 'POST',则返回的数据无法被缓存,并且为了填充“#GridA”和“#GridB”,将完成不同的请求。因此,将两个响应组合在一个操作中将没有任何优势。

此外,例如,如果用户单击“#GridA”的“名称”列的列标题,则会向 URL 发送另一个请求"/MyController/MyActionresult"。在请求中,参数的值sord将是“desc”而不是初始请求中的“asc”。如果用户将页面大小从 250 更改为 500,或者如果用户更改了需要显示的页面,也会向服务器发送新请求。

我试图解释对页面上的所有网格进行单独操作是有意义的。如果不是所有数据都将显示并且您实现了服务器端排序和分页,那么合二为一就没有多大意义。

于 2012-06-14T13:42:48.090 回答