dGrid продолжает прокручивать влево, и установка keepScrollPosition в true не работает
Я использую FeatureTable dgrid из API Esri. По сути, это додзе onDemandGrid. Всякий раз, когда я прокручиваю вправо от сетки и щелкаю по любой ячейке или строке, сетка всегда прокручивается обратно влево от начальной позиции. Я знаю, что внутри объекта сетки есть логическое свойство keepScrollPosition.
**doesn't work**
this.featureTable.grid.refresh({ keepScrollPosition: true });
**sets keepScrollPosition to 'true' but still continues to scroll back left when cell or row is clicked**
this.featureTable.grid.set({ keepScrollPosition: true });
**I tried setting the keepScrollPosition at the grid instance but doesn't seem to be working either**
this.featureTable = new FeatureTable({
featureLayer: this.featureLayer,
map: this.initData.mapController.map,
columns: this._getColumns(this.featureLayer),
grid: { keepScrollPosition: true }
}, "qr" + e.item.id);
Я прошел много форумов и провел несколько обширных исследований и, похоже, не смог добиться того, чтобы сетка сохранила свою позицию прокрутки. Я даже пытался вручную устанавливать позиции прокрутки {x,y} каждый раз, когда сетка отображается, но, кажется, она всегда обновляет, очищает и сбрасывает свою позицию прокрутки. Я полагаю, что это может быть ошибкой в додзё, но если кто-то покажет мне решение этой проблемы с прокруткой, это будет с благодарностью. Спасибо.
1 ответ
Я с той же проблемой. Во-первых, я думаю, что способ назначения "grid: { keepScrollPosition: true }" недопустим. Во-вторых, я не видел способа установить это свойство, которое является действительным. Я думаю, что Esri не дает доступ к этой функции.
Мой хакерский обходной путь должен был сделать это:
featureTable.grid.on(".dgrid-header .dgrid-cell:click", _headerClicked);
function _headerClicked(event){
var scroller = $(".MyContainerClassName .dgrid-scroller");
if (scroller.length) {
scroller = scroller[0];
var oldscrollpos = scroller.scrollLeft;
scroller.onscroll = function (evt) {
console.log("oldscrollpos:", oldscrollpos);
scroller.scrollLeft = oldscrollpos;
scroller.onscroll = null;// disable this callback so user can go back to real scrolling
}
}
}
Я должен добавить, что в моем случае прокрутка происходит только тогда, когда пользователь сортирует столбец, поэтому здесь scroll-fix вызывается только нажатием на заголовок столбца. Звучит так, как будто вам нужно будет запускать его на большем количестве событий, чем просто.