gaw*_*ron 5 javascript jquery jqgrid
我正在尝试使用新行,colNames和colModel重新加载jqGrid.行数据似乎加载正常,但列似乎没有刷新.我已经尝试过使用GridUnload和GridDestroy,但我最终完全丢失了jQuery DOM实例,并且不再加载任何数据.
var grid = $('#my-grid');
if(grid[0].grid == undefined) {
grid.jqGrid(options);
} else {
grid.setGridParam(options);
grid.trigger('reloadGrid');
}
Run Code Online (Sandbox Code Playgroud)
网格实例很重要,因为它将作为参数传递给其他对象.这些对象可以附加侦听器或触发事件.
我使用的是4.4.2版本
reloadGrid仅重新加载网格主体,而不更改将在创建网格时创建的列标题.
如果您需要更改列的数量或使用colNames,并colModel在老地方电网的你或重建电网.您可以先使用GridUnload方法然后创建新网格(grid.jqGrid(data)在您的情况下调用).重要的是,如果你在一个变量grid中将jQuery选择器缓存到一个变量中,就像你的代码一样,你必须grid在调用之后再分配一次GridUnload,所以你应该grid = $("#grid");在调用之后直接做一些事情GridUnload.
有关更多详细信息和代码示例,请参阅答案.
看来 jqGrid<table></table>从 DOM 中删除了首字母并替换它或忘记了引用(我没有仔细研究它)。
因此,每次要创建新网格时,都必须重新选择新表。$('table#my-grid')。如果您想将网格表的引用作为参数传递给应用程序的其他部分,这会变得很棘手。
我的解决方法包括删除网格引用并用原始表格替换网格的包装 div。然后使用新的 colModel 和 colNames 以正常方式创建 jqGrid。
grid.empty();
delete grid[0].grid;
$('#gbox_my-grid').replaceWith(grid);
grid.jqGrid(options);
Run Code Online (Sandbox Code Playgroud)
这不是最简洁的解决方案,但它确实允许我保留对原始解决方案的永久引用<table>。我不确定其他 jqGrid 插件将如何受此影响。
编辑
事实证明jQuery DataTables更适合定制,我们采用了它而不是使用 jqGrid。
| 归档时间: |
|
| 查看次数: |
14225 次 |
| 最近记录: |