0

kendo ui - グリッド コントロールを使用しているときに、データ ソースをリセットしても、グリッドのスクロール位置が自動的に上部に再配置されないことがわかりました。

これは予想される動作である可能性があるため、データソースを更新した後、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/

既存の剣道グリッドにデータを効率的にリロードし、IE9+、Chrome、Firefox、iOS および Android ブラウザーで機能する目的の位置までスクロールする方法についてのアイデアはありますか?

4

1 に答える 1

1

剣道はスクロール ラッパーでグリッドをラップします。このコードを使用して、上にスクロールできます。

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

更新:

剣道サポートからの公式回答:

タッチ スクリーン デバイスでは、Grid がモバイル スクローラーを使用するため、scrollTop メソッドが機能しません。reset メソッドでリセットできます。例えば:

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

このコードをデスクトップ ブラウザで実行すると、エラーが発生することに注意してください。両方のシナリオをサポートしたい場合は、kendo.support.mobileOS を使用できます。定義されていない場合は、scrollTop を使用する必要があるデスクトップ ブラウザーでグリッドが開かれます。

于 2013-11-19T11:44:22.957 に答える