Это немного глупо - возможно, лучшая стратегия - просто не использовать более старые версии ExtJS - но, похоже, это работает нормально.
По сути, просто объявляем некоторые глобальные переменные, которые можно увидеть из любого места в файле - один из них - флаг, указывающий, что произошло событие, инициирующее перезагрузку (rowClicked), и один - для представления последней известной позиции полосы прокрутки
var rowClicked = false;
var prevScrollPosition = -1;
Когда происходит событие, которое вызовет повторную загрузку - установите для глобальной переменной rowClicked значение true
rowclick: function(grid, rowIndex, event) {
rowClicked = true;
Затем в слушателях сетки используйте переменную rowClicked, чтобы определить, когда следует переместить полосу прокрутки.
listeners : {
bodyscroll: function(sl, st) {
if (rowClicked) {
getScenarioLineOrderNumbersGrid().getView().scroller.scrollTo('top',prevScrollPosition);
rowClicked = false;
}
prevScrollPosition = st;
}
Клудги - но это работает.