Прокрутить строку в программном виде в буферную сетку
У меня есть буферизованная, сгруппированная сетка, и я хочу прокрутить просмотр определенной строки (под рукой есть и запись, и индекс записи / строки).
Я пробовал без документов
grid.getView().scrollRowIntoView(index)
но это работает только в небуферизованных сетках, потому что это вызывает
view.getRow(row)
которая возвращает только те строки, которые отображаются в данный момент, а не те, которые не были отображены.
Есть ли официальная функция, которую я пропустил или что еще можно сделать, чтобы перейти к нужной записи?
2 ответа
Плагин bufferedRenderer имеет функцию scrollTo(recordIdx)
,
Там нет функции в gridpanel
или же gridview
или же dataview
что вызывает bufferedRenderer.scrollTo
так что я думаю, вам нужно позвонить getView().bufferedRenderer.scrollTo
прямо из вашей сетки.
Обновление: обратите внимание, что scrollTo
может не вызываться, если хранилище пусто, так как это вызывает ошибку в платформе. Причина в том, что scrollTo
берет индекс записи; если индекс ниже 0, он будет установлен в 0, если это store.Count() или больше, он будет установлен в store.Count()-1 (что равно -1, если хранилище пусто). Затем запись извлекается из магазина (getAt(index)
), который возвращает null
тогда и только тогда, когда хранилище пусто, а затем проверяется, что запись действительно является моделью:
if(record.isModel)
который затем вызывает ошибку
Uncaught TypeError: Невозможно прочитать свойство 'isModel' из null
Таким образом, вы должны всегда проверять, что магазин не пуст, прежде чем звонить scrollTo
:
if(view.store.getCount()) view.bufferedRenderer.scrollTo(index);
Вопрос был рассмотрен на форуме Сенчи, где Гари Шлосберг из команды поддержки Сенчи ответил:
Вы пробовали
ensureVisible
конфиг? Опция обратного вызова упоминает использование с BufferedStore.