回调以设置postdata,而无需重新加载网格

callback to set postdata without having to reload grid?

本文关键字:新加载 加载 网格 设置 postdata 回调      更新时间:2023-09-26

(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"}
    });
}

还具有回调函数:gridCompleteloadComplete;并且我尝试将CCD_ 7参数直接设置为jqGrid。

但在没有用CCD_ 8重新加载的情况下,两者都不起作用。

谢谢你的帮助!

在我看来,您可以在创建网格的过程中使用参数

loadonce: true,
forceClientSorting: true,
search: true,
postData: {
   filters: {
       groupOp: "AND",
       rules: [
           {field: "customer", op: "cn", data: "difranco"}
       ]
   }
}

使用gridCompleteloadComplete.trigger("reloadGrid")不需要任何技巧。请参阅演示或此演示,我将其包含在免费jqGrid 4.13.1的自述中。演示使用本地数据,但远程数据也是如此。在这里和这里可以看到一些更复杂的演示,它们主要展示了另一个强大的功能:additionalProperties和使用sortfunc的自定义排序,但它使用loadonce: true, forceClientSorting: truepostData.filters以及search: true

重要的是,服务器应该忽略所有向其发送jqGrid并返回所有数据的参数。Free jqGrid将根据postData.filters对服务器返回的数据进行过滤,对结果进行排序,并将最终结果的第一页显示给用户。用户可以使用本地分页,可以修改过滤器等等。对服务器没有额外的要求。