javascript - jqGrid添加函数添加本地JSON

标签 javascript jquery jquery-plugins jquery-selectors jqgrid

我正在尝试为 jqGrid 创建一个附加函数,以简化将 JSON 数据添加到使用本地数据的网格中的过程。以下尝试仅适用于一行,但会导致失败。

  $.fn.myrows = function(data) {
    $(this).clearGridData();
    $(this).jqGrid("setGridParam", {datatype: "json", loadonce: true});
    $("#" + (this).selector)[0].addJSONData(data); // PROBLEMATIC LINE
    $(this).jqGrid("setGridParam", {datatype: "local", loadonce: true});
  };

然后调用此函数:$("#myGrid").myrows(jsonDataObject);

请注意,这些行不在该函数内时才起作用。

有什么想法吗?谢谢!

最佳答案

the answer关于你之前的问题,我试图解释如何扩展 jqGrid 以支持新方法。说实话,我看不出 jqGrid 扩展会给您带来什么真正的优势。为什么不将你的函数定义为

var myrows = function(grid,data) {
    // function body
};

并以如下方式使用它:

myrows($("#myGrid"),jsonDataObject);

在我看来,更重要的是实现你所需要的。您当前的代码有很多缺点。如果网格具有datatype:“local”,则可以使用本地数据分页。 addJSONData方法添加了网格中的所有数据,因此页面大小可以被打破。

如果您有数据类型:“local”并想用数据填充它,那么最有效的方法是设置网格的data参数setGridParam 然后只需调用 $("#myGrid").trigger('reloadGrid',[{page:1}]) (请参阅 here )。

或者,您可以使用许多其他现有方法,例如 addRowData它允许在一个方法调用中添加多行数据。

如果您从服务器获取 JSON 数据并使用 addJSONData 方法填充网格,这将是非常糟糕的方式。 jqGrid从3.5版本开始有丰富的方式来定制所使用的ajax请求。因此,强烈建议您不要在这种情况下使用 addJSONData。请参阅here了解详情。

关于javascript - jqGrid添加函数添加本地JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389109/

相关文章:

javascript - 实现 Jquery slider

javascript - 未处理的拒绝(TypeError): ships.reduce不是函数

php - Flash/Actionscript 是 css 和 javascript 的替代品吗?

javascript - 在没有 "Possible strict violation."的函数中使用它

javascript - 在前一个脚本独立后添加脚本标记行

jquery - $ ('div.img',这个)

javascript - 如何在javascript中随机播放声音

javascript - 无法在 HTML5、jquery 中验证跨度单选按钮

jquery轮询解决方案

javascript - Mottie 虚拟键盘和选择器