2015-11-06 90 views
2

如何在每次更新jqgrid時保持滾動狀態?我嘗試了以下方法:在jqgrid中維護滾動狀態

var scrollPosition = $("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop(); 
$("#"+grid_id).trigger("reloadGrid", [{current:true}]); 
$("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop(scrollPosition); 

但它不起作用,滾動條在網格刷新後移回頂部。

此外,$("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop();每次輸出0,雖然網格有一個滾動條。選擇器參數($("#"+grid_id))不正確?那裏應該有什麼?

回答

2

我想你試着設置scrollTop之前數據加載到網格中。我建議您將scrollTop保存到網格的自定義選項,並重置loadComplete回調或jqGridAfterLoadComplete事件中的位置。

爲了節省您可以使用

var $grid = $("#"+grid_id), 
    p = $grid.jqGrid("getGridParam"); 
p.scrollTopPosition = $grid.closest(".ui-jqgrid-bdiv").scrollTop(); 

要恢復的位置滾動榜首的位置,你可以使用

$("#"+grid_id).bind("jqGridAfterLoadComplete", function() { 
    var $self = $(this), p = $self.jqGrid("getGridParam"); 

    if (p.scrollTopPosition !== undefined) { 
     $self.closest(".ui-jqgrid-bdiv").scrollTop(p.scrollTopPosition); 
     p.scrollTopPosition = undefined; 
    } 
}); 
+0

我不知道爲什麼,但'jqGridAfterLoadComplete'功能不被稱爲。然而網格令人耳目一新。 –

+1

請在**每個問題中包含**:您使用的jqGrid的版本以及您使用的jqGrid的哪個分支(免費的jqGrid,Guriddo jqGrid JS或<= 4.7版本中的某些舊的jqGrid)。在任何情況下,如果使用舊版本的jqGrid,可以使用'loadComplete'而不是'jqGridAfterLoadComplete'。 – Oleg

+0

@SuhailGupta:問題解決了還是還有一些問題?如果存在問題,請提供可用於重現問題的演示。 – Oleg