[英]jqGrid reloadGrid and refresh new colModel and colNames
我正在嘗試使用新行,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');
}
網格實例很重要,因為它將作為參數傳遞給其他對象。 這些對象可以附加偵聽器或觸發事件。
我使用的是4.4.2版本
reloadGrid
僅重新加載網格的主體 ,而不更改將在創建網格時創建的列標題。
如果您需要更改列數或使用colNames
和colModel
代替舊網格,或者重新創建網格。 您可以先使用GridUnload方法,然后創建新的網格(在您的情況下調用grid.jqGrid(data)
)。 重要的是,如果你在代碼中的grid
變量中將jQuery選擇器緩存到網格中,你必須在調用GridUnload
后再分配一次grid
,所以你應該做類似grid = $("#grid");
直接調用GridUnload
。
有關更多詳細信息和代碼示例,請參閱答案 。
我將兩個答案結合起來並做了一些修改才能讓它發揮作用。
var grid = $('#tableID');
if(grid[0].grid == undefined) {
grid.jqGrid(options);
} else {
delete grid;
$('#tableID').GridUnload('#tableID');
$('#tableID').jqGrid(options);
}
似乎jqGrid從DOM中刪除了初始的<table></table>
並替換它或忘記了引用(我沒有看到那么難)。
因此,每次要創建新網格時都必須重新選擇新表格。 $('table#my-grid')
。 如果您想將網格表的引用作為參數傳遞給應用程序的其他部分,這將使其變得棘手。
我的工作涉及刪除網格引用並用原始表替換網格的包裝div。 然后使用新的colModel和colNames以正常方式創建jqGrid。
grid.empty();
delete grid[0].grid;
$('#gbox_my-grid').replaceWith(grid);
grid.jqGrid(options);
它不是最整潔的解決方案,但它確實允許我保留對原始<table>
的永久引用。 我不確定其他jqGrid插件會如何受此影響。
編輯
事實證明, jQuery DataTables更適合自定義,我們采用了它而不是使用jqGrid。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.