Ответ 1
Попробуйте этого плохого мальчика, чтобы сохранить положение прокрутки при обновлении: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.View-cfg-preserveScrollOnRefresh
Это работает для меня на моем древовидном представлении.
Я использую grid.Panel в Sencha ExtJs 4.0.2a, и я перезагружаю Json Store каждые 60 секунд.
Мне было интересно, есть ли способ сохранить положение полосы прокрутки после загрузки данных.
Чтобы пользователь мог продолжить просмотр записей, которые он просматривал до загрузки.
Я перезагружаю данные в сетке с помощью задачи:
var task = {
run: function(){
Ext.getCmp(panelGridId).getStore().load({
//Callback function after loaded records
callback: function(records) {
//Hide grid if empty records
if (Ext.isEmpty(records)) {
Ext.getCmp(panelGridId).setVisible(false);
}
else {
if (Ext.getCmp(panelGridId).isHidden()) {
Ext.getCmp(panelGridId).setVisible(true);
Ext.getCmp(panelGridId).doComponentLayout();
}
}
}
});
},
interval: 60000 //60 seconds
};
Ext.TaskManager.start(task);
После загрузки данных позиция полосы прокрутки reset вверху.
Q: Есть ли способ сохранить позицию полосы прокрутки после загрузки данных?
Спасибо заранее!
Попробуйте этого плохого мальчика, чтобы сохранить положение прокрутки при обновлении: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.View-cfg-preserveScrollOnRefresh
Это работает для меня на моем древовидном представлении.
Здесь вы можете использовать preserveScrollOnRefresh в своей сетке:
Ext.define('js.grid.MyGrid', {
extend: 'Ext.grid.Panel',
viewConfig: {
preserveScrollOnRefresh: true
}
Здесь JSFiddle, который демонстрирует это:
http://jsfiddle.net/cdbm6r0o/7/
Однако, когда вы выбираете строку, похоже, что она работает неправильно. Я не уверен, что это ошибка.
Событие 'refresh' запускается из этого кода:
grid.store.loadData(dataToLoad);
Я не знаю никаких других событий, которые вызывают "обновление"
Дополнительные примечания:
Вы можете использовать свойство конфигурации preserveScrollOnReload
вида:
viewConfig: {
preserveScrollOnReload: true
},