понедельник, 11 апреля 2011 г.

ExtJS выделить строку в таблице grid

Проблема: выделить одну строку (например, первую) в таблице grid сразу после ее загрузки. Казалось бы, проблемы как таковой здесь нет - получили SelectionModel таблицы и сделали selectRow(rowIndex). По сути - все действительно так, однако необходимо выбрать нужный момент для выполнения этого кода. Попробуйте, например, выделить строку в событии afterrender или render - увы, выделение не сработает. Решение, тем не менее, безусловно есть.

Решение: необходимо воспользоваться событием viewready, возникающим, когда таблица grid полностью отрисована на странице и готова к манипуляциям. Как гласит документация, viewready используется как раз для осуществления выделения строки по умолчанию.

Предположим, что нам нужно выделить первую строку таблицы:

grid = new Ext.grid.EditorGridPanel({
  store: myStore,
  height: 500,
  border: false, frame: false,
  cm: myColumnModel,
  selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),
  listeners: {
    viewready: function(g){
      g.getSelectionModel().selectRow(0);
    }
  }

Обратите внимание, что в случае необходимости использования так называемой модели выделений SelectionModel необходимо явно указывать selModel в конфигурации таблицы, в противном случае вызов метода grid.getSelectionModel() вызовет ошибку.

Комментариев нет:

Отправить комментарий