回调设置postdata而不必重新加载网格?

时间:2016-04-19 08:45:12

标签: javascript jquery ajax jqgrid free-jqgrid

是(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; 我试图将postData参数直接设置为jqGrid。

但没有使用.trigger("reloadGrid")重新加载也没有奏效。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在我看来,您可以在创建网格时使用参数

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

gridCompleteloadComplete.trigger("reloadGrid")不需要任何技巧。请参阅the demo中包含的this onethe readme以免费使用jqGrid 4.13.1。演示使用本地数据,但同样适用于远程数据。查看一些更复杂的演示herehere,它们主要演示了另一个强大的功能:additionalProperties和使用sortfunc的自定义排序,但使用loadonce: true, forceClientSorting: true和{ {1}} postData.filters

服务器应该忽略所有向jqGrid发送jqGrid并返回所有数据的参数,这一点非常重要。免费的jqGrid将根据search: true过滤从服务器返回的数据,对结果进行排序并向用户显示最终结果的第一页。用户可以使用本地分页,可以修改过滤器等。不存在对服务器的其他要求。