9

我从传递给视图的模型类生成我的 jqgrid。我得到了构建和工作的 jqgrid。但是,我想在我使用 jqGrid 的一个视图上设置 postData,在我调用 helper 以创建 jqgrid 之后,从该视图中的脚本,而不必更改创建 jqgrid 的整个部分视图。

我试着跑步

$("#@Model.Id").jqGrid('setGridParam', { postData: { test: 233} });

$("#@Model.Id").setGridParam({ postData: { test: 233} });

但没有错误或任何结果。如果我在 jqgrid 参数中设置 postData (在构造它的部分视图中,它可以工作。

我还检查了网格是否存在,添加了

console.log($("#@Model.Id").size());

在第一行之前,它显示 1。

更新:这个 .setGirdParam 函数开始为我工作,没有明显的原因,所以如果有人能提供一些见解,什么可以阻止它工作,我会接受答案。谢谢

4

3 回答 3

12

您没有在问题中包含 jqGrid 的定义,我们看不到调用的地方setGridParam。首先,您应该在创建 jqGridsetGridParam 之后,但发送请求之前使用。如果您将更改postData 下一个jqGrid 请求可以使用新参数。所以通常使用

$("#@Model.Id").trigger('reloadGrid', [{page:1}]);

这里

我想对您来说最好的选择是使用函数的函数test属性postData作为函数:

$("#@Model.Id").jqGrid({
    // ... other jqGrid parameters ...
    postData: {
        test: function() {
            // the code can by dynamic, read contain of some elements 
            // on the page use "if"s and so on and return the value which 
            // should be posted to the server
            return 233;
        }
    }
    // other jqGrid parameters ...
});

有关详细信息,请参见此处。通过这种方式,您几乎可以实现任何场景。

顺便说一句,如果您不希望 jqGrid 在事件发生之前向服务器发送任何请求,您可以datatype:'local'在初始化时使用。然后,如果您希望填充网格,您可以使用setGridParamdatatypefrom更改'local''json'(或'xml')并调用.trigger('reloadGrid',...).

于 2011-05-31T09:47:03.053 回答
3
$("#grid id").setGridParam({ postData: {data:dataval} });
$("#grid id").trigger('reloadGrid', [{page:1,data:dataval}]);ntn
于 2012-12-20T08:03:53.570 回答
1

这是我使用的方法

postData: { 'testKey': function () { return 'testvals'; } },
于 2013-10-05T18:45:41.047 回答