Comments 7
Спасибо за статью. Интересное решение. У нас немного иначе, у нас над гридом есть тулбар, который меняется в зависимости от выбранной строки. А как это влияет на скорость, особенно при каком-нибудь infinite scrolling? Ведь sencha team специально убрала все контролы из грида, чтобы скорость его при больших объемах данных была приемлемой…
Похоже, вам еще предстоит работа над рендеренгом вашего компонента. Что-то мне подсказывает, что вы где-то использовали не те события Ext.grid.Panel. Жаль сейчас нет времени разобраться, да и на extjs не делал ничего больше года, может быть чуть позже посмотрю сам.
Может быть, лаги из-за задержки?
Ext.defer(this.renderItems, 50, this);
Да, Вы правы, рендеринг производится по таймауту в 50ms (величина подобрана эмпирически и, конечно, хорошо бы параметр вынести в отдельное поле). Обусловлено это отсутствием подходящего события под такой рендеринг. Дилемма состоит в том, что строки таблицы обновляются после загрузки store'а (store -> load или store -> prefetch). Но, в то же время, рендерить компонент не дождавшись, пока строки таблицы с данными не будут отрисованы (grid -> afterrender), так же чревато неверным поведением. В связи с чем, в процессе разработки было протестировано множество событий компонента Ext.grid.Panel. Но, увы, большинство из них не подошло по определенным причинам. По-моему, дело было в том, что объекты features отрисовываются после grid'а, но при этом сами не содержат событий, которые позволили бы отловить сей момент.
Проще говоря, новые features либо были неправильно применены к данной проблеме, либо еще сырые для использования в таких случаях.
Проще говоря, новые features либо были неправильно применены к данной проблеме, либо еще сырые для использования в таких случаях.
Извините, а чем не понравился Ext.grid.column.Action?
Разумеется, для решения подобной задачи существует «actioncolumn». Однако, для его элемента нет нормальной возможности добавить подпись к кнопке. Но вместо размещения кнопок в дополнительной колонке, было принято решения перенести их на новую строку для большей наглядности, т.к. работнику, зачастую, достаточно лишь прочесть первую ячейку, чтобы начать тянуться к функциональной кнопке.
Sign up to leave a comment.
Компонент для интеграции строк Ext.grid.Panel с Ext.toolbar.Toolbar