Прокрутить строку в программном виде в буферную сетку

У меня есть буферизованная, сгруппированная сетка, и я хочу прокрутить просмотр определенной строки (под рукой есть и запись, и индекс записи / строки).

Я пробовал без документов

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.

Другие вопросы по тегам