簡體   English   中英

jqGrid reloadGrid並刷新新的colModel和colNames

[英]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僅重新加載網格的主體 ,而不更改將在創建網格時創建的列標題。

如果您需要更改列數或使用colNamescolModel代替舊網格,或者重新創建網格。 您可以先使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM