0

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

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

类似于此处的 PHP 示例。

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

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

- - - 编辑 - - -

在这个答案(这里这里)的帮助下,我现在得到了这个。

$.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);
    },
});
4

2 回答 2

2

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

 postData: { ExtraDataName: ExtraDataValue },

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

于 2013-01-25T18:56:27.960 回答
0

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

通过扩展$.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);
    },
});
于 2013-01-28T10:44:02.690 回答