jquery - 是否可以通过单个 ajax 调用一次填充 2 个 jqGrid?

标签 jquery ajax asp.net-mvc jqgrid

我有一个 ASP.NET-MVC 站点,其网页上有 2 个 jqGrid。它们各自列出了自己的“URL”属性,因此它们都调用单独的 ajax 调用。

我想看看是否可以将其合并到一个 json 调用中,该调用同时返回两个网格的 json(而不是 2 个单独的调用)

所以在我的 Controller 中每个方法都用这个代替这个

        return Json(new
        {
            Page = 1,
            Records =  GetData().Count,
            Rows = GetData(),
            Total = 1
        });

我想看看您是否可以在一次调用中返回两个:

   var grid1Data = (new
        {
            Page = 1,
            Records =  GetData().Count,
            Rows = GetData(),
            Total = 1
        });

   var grid2Data = (new
        {
            Page = 1,
            Records =  GetOtherData().Count,
            Rows = GetOtherData(),
            Total = 1
        });

      return Json(new
        {
                Grid1 = grid1Data, Grid2 = grid2Data
        });

但我无法弄清楚这在 javascript 端如何工作,因为现在我的代码如下所示(单独的 ajax 调用):

$("#myGrid1").jqGrid({
    mtype: "POST",
    url: "/GetGrid1Data",
    datatype: "json",

$("#myGrid2").jqGrid({
    mtype: "POST",
    url: "/GetGrid2Data",
    datatype: "json",

这可能吗?

最佳答案

乍一看,每个 Ajax 调用填充两个网格看起来很有吸引力。问题是,只有使用 loadonce: true 才能有一些优势。网格中至少有一个选项。仅在您可以进行一次 Ajax 调用并填充另一个网格(其中有 loadonce: true 选项)的情况下。原因很简单。如果您的两个网格都没有 loadonce: true选项,然后用户可以通过单击列标题对数据进行排序,单击“下一步”页面在一个网格中设置过滤器。在这种情况下,仅需要从服务器重新加载来自网格的数据。我认为在这种情况下加载两个网格的数据没有任何意义。

如果您使用loadonce: true网格中至少有一个选项,那么您只需更改两个选项 datatype: 'json', loadonce: true在网格中选择一个选项 datatype: 'local' 。您可以在填充第一个网格时填充网格。您可以设置data第二个网格的参数并调用 roloadGrid .

例如,在第一个网格中,您可以使用

jsonReader: {
    root: "Grid1.Rows",
    page: "Grid1.Page",
    total: "Grid1.Total",
    records: "Grid1.Records"
}

因此网格将从 Grid1 加载服务器响应的一部分。此外,您还可以看到Grid2属性(property)在data loadComplete的参数或beforeProcessing回调,设置data使用setGridParam的第二个网格的选项然后触发"reloadGrid"网格上的事件。在这种情况下,应使用 datatype: "local" 创建第二个网格。和选项 mtype , urlloadonce您可以从第二个网格的选项列表中删除。

关于jquery - 是否可以通过单个 ajax 调用一次填充 2 个 jqGrid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329196/

相关文章:

jquery - Phonegap - 可靠的页面宽度检测?

javascript - 使用Javascript动态获取和设置li标签onClick的自定义属性

c# - 为特定请求禁用 ASP.NET session 刷新

php - $.post数据命名问题

javascript - JQuery Accordion 在点击时一直移动到页面顶部

javascript - jQuery : "this" property is not working on $(document) click

php - 单击从 mysql 加载到表中

javascript - 返回包含 javascript 的部分 View 是不好的做法吗?

asp.net-mvc - 在 EF CF 中添加/更新导航属性

.net - 如何使用 SignalR 将事件从 Web Api 项目广播到不同应用程序池上的 MVC 应用程序