我有一个PHP脚本来处理许多不同jqGrid的AJAX请求。
我使用'sidx'和'sord'参数生成“ORDER BY”语句,使用'page'和'rows'参数生成“LIMIT”语句。
与PHP示例here类似。
问题是,在PHP脚本中我无法确定是否设置了当前jqGrid的loadonce参数。 但是只有在没有设置的情况下,我必须过滤返回的数据(按页面和行限制)。
如何强制jqGrid发送其他参数? 我不想改变我的所有网格。有没有一种全球性的方式呢?
------编辑------
在这个答案(here和here)的帮助下,我现在得到了这个。
$.extend($.jgrid.defaults, {
postData: {
loadingType: function() {
var isLoadonce = $("#list1").jqGrid('getGridParam', 'loadonce');
console.log('isLoadonce: ' + isLoadonce);
return isLoadonce ? 'loadAll' : 'loadChunk';
},
},
});
如果网格具有ID“list1”,则此方法有效。如何在没有ID的情况下引用当前网格?
------编辑2 ------
这似乎有效。它看起来有点像黑客。还有更好的方法吗?
$.extend($.jgrid.defaults, {
serializeGridData: function(postData) {
var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce');
var newPostData = $.extend(postData, {
loadingType: isLoadonce ? 'loadAll' : 'loadChunk'
});
return $.param(newPostData);
},
});
答案 0 :(得分:2)
要传入额外的参数,您可以添加:
postData: { ExtraDataName: ExtraDataValue },
然后每当jqGrid去获取数据时,它都会将该名称对传递给您的控制器。
答案 1 :(得分:0)
使用serializeGridData
,jqGrid提供一个事件来修改随Request发送的数据。事件在当前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);
},
});