Наконец я нашел этот раздел в faq сетки extjs.Этот отрывок напрямую не работает в webkit-браузерах.Вы должны добавить тайм-аут и вызвать часть восстановления немного позже.100мс помогли мне здесь.Вот что у меня сейчас:
grid.getView().on('beforerefresh', function(view) {
view.scrollTop = view.scroller.dom.scrollTop;
view.scrollHeight = view.scroller.dom.scrollHeight;
});
grid.getView().on('refresh', function(view) {
setTimeout(function () {
view.scroller.dom.scrollTop = view.scrollTop + (view.scrollTop == 0 ? 0 : view.scroller.dom.scrollHeight - view.scrollHeight);
}, 100);
});
Работает в IE8, Chrome9, Firefox3.6
Не в Opera 11
У этого решения есть один недостаток: без активацииГоворя представлению не восстанавливать позицию прокрутки, оно также восстанавливается, если вы переходите на следующую страницу с помощью paginator.
Я думаю, что sencha должен интегрировать эту функцию как опцию, потому что это глубокая интеграция, чтобы сказать представлениюсетка для восстановления позиции, если магазин перезагружает ту же позицию источника данных, и не делать этого, если были внесены изменения в базовые параметры ... или около того.