我正在尝试为 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/