(free-)jqGrid是否提供了一个回调函数,在其中可以在加载网格之前设置postData
?
在我的情况下,它是伪postData
,因为我将jqGrid与loadOnce : true
一起使用。
我正在使用postData
将过滤器应用于网格。我通过ajax调用加载此数据。
我想一次从服务器加载所有网格数据-但随后在本地应用过滤器。因此,当用户更改这些过滤器(例如,通过使用工具栏搜索/过滤)时,它只会应用于本地数据。
我已经尝试过:
beforeInitGrid : function()
{
$("#grid").jqGrid('setGridParam', {
search: true,
postData : {"toolbar":[{"name":"customer","value":"difranco"}],"postdata":{"_search":"true","nd":"1461054190117","rows":"30","page":"1","sidx":"my_date","sord":"asc","totalrows":"10000","filters":"{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"customer\",\"op\":\"cn\",\"data\":\"difranco\"}]}"},"sortname":"my_date","sortorder":"asc","page":"1","rowNum":"30"}
});
}
还具有回调函数:
gridComplete
,loadComplete
;我试图直接将
postData
参数设置为jqGrid。但是没有重新加载
.trigger("reloadGrid")
都没有工作。谢谢你的帮助!
最佳答案
在我看来,您只能在创建网格时使用参数:
loadonce: true,
forceClientSorting: true,
search: true,
postData: {
filters: {
groupOp: "AND",
rules: [
{field: "customer", op: "cn", data: "difranco"}
]
}
}
您不需要
gridComplete
,loadComplete
和.trigger("reloadGrid")
的任何技巧。请参见the demo或this one,我将其包含在the readme中以释放jqGrid 4.13.1。这些演示使用本地数据,但对于远程数据也可以使用。请参见更复杂的演示here和here,这些演示主要展示了另一个强大的功能:additionalProperties
和使用sortfunc
的自定义排序,但是使用loadonce: true, forceClientSorting: true
和postData.filters
和search: true
。重要的是,服务器应忽略所有向其发送jqGrid并返回所有数据的参数。免费的jqGrid将基于
postData.filters
过滤从服务器返回的数据,对结果进行排序,并向用户显示最终结果的第一页。用户可以使用本地分页,可以修改过滤器等。对服务器不存在其他要求。关于javascript - 回调以设置postdata而不必重新加载网格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36713180/