【问题标题】:jqGrid: add loadonce as parameter to the AJAX-requestjqGrid:将 loadonce 作为参数添加到 AJAX 请求
【发布时间】:2013-01-09 09:06:00
【问题描述】:

我有一个 PHP 脚本来处理许多不同 jqGrid 的 AJAX 请求。

我生成带有“sidx”和“sord”参数的“ORDER BY”语句以及带有“page”和“rows”参数的“LIMIT”语句。

类似于 PHP 示例 here

问题是,在 PHP 脚本中我无法确定当前 jqGrid 的 loadonce 参数是否已设置。 但只有在没有设置的情况下,我必须过滤返回的数据(按页和行限制)。

如何强制 jqGrid 发送附加参数? 我不想改变我所有的网格。有没有一种全球性的做法?

----- 编辑 ------

在这个答案(herehere)的帮助下,我现在明白了。

$.extend($.jgrid.defaults, {
    postData: {
        loadingType: function() {
            var isLoadonce = $("#list1").jqGrid('getGridParam', 'loadonce');
            console.log('isLoadonce: ' + isLoadonce);
            return isLoadonce ? 'loadAll' : 'loadChunk';
        },
    },
});

如果网格的 ID 为“list1”,则此方法有效。如何引用当前没有 ID 的 Grid?

----- 编辑 2 ------

这似乎有效。在我看来,它有点像黑客。有没有更好的办法?

$.extend($.jgrid.defaults, {
    serializeGridData: function(postData) {
        var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce');
        var newPostData = $.extend(postData, {
            loadingType: isLoadonce ? 'loadAll' : 'loadChunk'
        });
        return $.param(newPostData);
    },
});

【问题讨论】:

  • 你能提供一个解决问题的jsfiddle吗?
  • @Floradu88 我不知道我可以在 jsFiddle 中向您展示什么。我的问题不是网格不工作。但我想知道是否有办法扩展 Grid 的 ajax-request。

标签: jqgrid


【解决方案1】:

要传入一个额外的参数,您可以添加:

 postData: { ExtraDataName: ExtraDataValue },

然后,每当 jqGrid 去获取数据时,它都会将该名称对传递给您的控制器。

【讨论】:

  • 是的,但是这样附加值是静态的。在服务器站点上,我想知道当前网格是否为“loadonce”。通过我的第二次“编辑”,我找到了一种存档方法。我只是不知道这是否是最好的方法。
  • 我不确定我是否理解问题所在?在我上面的示例中,如果您想传入 loadonce 值,您只需设置 ExtraDataName: $(this).jqGrid('getGridParam', 'loadonce');
【解决方案2】:

使用serializeGridData,jqGrid 提供了一个事件来修改随请求发送的数据。该事件是在当前 Grid 的上下文中调用的,因此我们可以通过 this 访问当前 Grid。

通过扩展$.jgrid.defaults,我们可以让所有网格都发送它们的loadonce 参数作为附加请求参数,而无需更改任何网格。

$.extend($.jgrid.defaults, {
    serializeGridData: function(postData) {
        var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce');
        var newPostData = $.extend(postData, {
            loadingType: isLoadonce ? 'loadAll' : 'loadChunk'
        });
        return $.param(newPostData);
    },
});

【讨论】:

    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 2014-07-17
    • 2013-12-12
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多