2013-06-20 84 views
0

當使用kendo ui - 網格控件時,我發現重置數據源不會自動將網格滾動位置重新定位到頂部。Kendo UI和jquery scrollTop在ios和Android瀏覽器上無法正常工作

這可能是預期的行爲,所以刷新數據源後,我添加了一個調用jQuery的scrollTop(0)。這適用於桌面瀏覽器,但不適用於iPad。

$("#switch-data-btn").on("click", function(){ 
    grid.dataSource.data(currentData); 
    grid.dataSource.transport.data = currentData; 
    grid.content.scrollTop(0); 
    grid.refresh(); 
}); 

http://jsfiddle.net/BFAnK/6/

我決定然後去核,而不是刷新網格數據,我破壞了電網和重建。當我這樣做時,我不再需要scrollTop(0)調用,並且所有的都與世界一致。

$("#switch-data-btn").on("click", function() { 
    buildGrid(currentData); 
    // buildGrid() destroys the grid, empties the dom element and recreates it. 
}); 

http://jsfiddle.net/BFAnK/11/

上述解決方案是不理想,但適用於有限的情況下。但是,只要你引入一個場景,你希望網格使用scrollTop()滾動到一個特定的位置,iPad的行爲就會滾動到位置,但是阻止你滾動回來查看並粘貼更早的結果(在桌面上工作瀏覽器)。

$("#switch-data-btn").on("click", function() { 
    buildGrid(currentData); 
    grid.content.scrollTop(50); 
}); 

http://jsfiddle.net/BFAnK/12/

就如何有效地重新加載數據到現有的劍道GRI和滾動到整個IE9 +,Chrome瀏覽器,Firefox和iOS和Android瀏覽器上運行的所需位置的任何想法?

回答

1

劍道在滾動包裝中包裝網格。您可以使用此代碼,將其滾動到頂端:

grid.wrapper.find(".km-scroll-container").css("-webkit-transform", ""); 

UPD:

從劍道支持

官方的回答:

的scrollTop的方法是行不通的,因爲在觸摸屏設備的電網使用移動滾動條。 您可以使用重置方法重置它。例如:

var grid = $("#grid").data("kendoGrid"); 
grid.content.data("kendoMobileScroller").reset(); 

請注意,在桌面瀏覽器上執行此代碼會產生錯誤。 如果你想支持這兩種情況,你可以使用kendo.support.mobileOS - 如果它是未定義的,那麼在應該使用scrollTop的桌面瀏覽器上打開網格。

相關問題