【问题标题】:jqGrid's "loadonce:true" and "datatype: json" don't get alongjqGrid 的 "loadonce:true" 和 "datatype: json" 不协调
【发布时间】:2011-07-06 19:19:29
【问题描述】:

我的应用程序中有一个网格。为了用数据填充它,用户填写一个表单并提交它。服务器以 JSON 数据进行响应,其中包含 所有 网格结果(服务器不会再次命中)。

就 jqGrid 而言,设置为 loadonce: truedatatype: "json"。但这些不能一起工作。

我一直在做的——这似乎是一种糟糕的做法——如下,它改变了网格设置,加载数据,并改变了网格的设置。

$("#myGrid").jqGrid("setGridParam", {datatype: "json", loadonce: true});
$("#myGrid")[0].addJSONData(data);
$("#myGrid").jqGrid("setGridParam", {datatype: "local", loadonce: true});

还有其他更好的方法吗?

谢谢!

【问题讨论】:

    标签: jquery jquery-plugins jqgrid


    【解决方案1】:

    如果您设置了正确的网格url,并且网格将填充服务器数据(有或没有loadonce:true),那么要从服务器重新加载数据,您可以执行以下操作:

    $("#myGrid").jqGrid("setGridParam",{datatype:"json"}).trigger("reloadGrid");
    

    $("#myGrid").jqGrid("setGridParam",{datatype:"json"}).trigger("reloadGrid",[{page:1}]);
    

    【讨论】:

    • 不幸的是,我的表单上有很多字段,而 jqGrid 的序列化方式几乎是不可能的(我希望我可以只传递 form.serialize(),但不支持)。
    • @Jack B.:关于postData: { yourParam: function() { return form.serialize();} },您可以始终将序列化的表单值与其他网格参数一起发送。您应该准确描述您的情况并决定将哪些数据以及何时发送到服务器。详情请见here
    【解决方案2】:

    我刚刚使用afterSubmit 事件进行创建/编辑/删除操作解决了同样的问题。这是问题和答案:

    Can't refresh jqgrid with loadonce: true

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我的解决方案是:

      $("#myGrid").jqGrid('setGridParam', { url: 'MyNewUrl', datatype:"json" });
      $("#myGrid").trigger("reloadGrid");
      

      或者

      $("#myGrid").jqGrid('setGridParam', { url: 'MyNewUrl', datatype:"json"}).trigger("reloadGrid");
      

      我希望它对你有用。

      【讨论】:

        猜你喜欢
        • 2011-10-27
        • 2013-05-05
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 2013-07-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多