Выбор модели
Благодаря выделению строки мы можем настроить выбор модели из грида. При этом мы можем настроить также и параметры выделения
строки и даже отдельной ячейки с помощью моделей Ext.selection.RowModel
и Ext.selection.CellModel
.
Возьмем определение грида из предыдущего параграфа и применим Ext.selection.RowModel, заменив последний столбец следующим образом:
{ xtype:'actioncolumn', width:40, items:[{ icon:'del.png', handler:function (grid, rowIndex, colIndex) { var selectionModel= grid.getSelectionModel(), record; selectionModel.select(rowIndex); record = selectionModel.getSelection()[0]; alert('Вы собираетесь удалить ' + record.get('name')); // удаление из таблицы // store.removeAt(rowIndex); } }] }
С помощью вызова grid.getSelectionModel()
мы получаем модель выбора строки.
Метод selectionModel.select(rowIndex);
выделяет строку (если она не выделена), а с помощью кода
record = selectionModel.getSelection()[0];
мы получаем модель, которая отображается на данную строку,
в переменную record и затем модем уже ее манипулировать. Например, далее мы получаем значение свойства name: record.get('name')
Несколько иначе работает класс CellSelectionModel
, задающий выделение отдельной ячейки, а выделение всей строки при этом не происходит.
Для этого для всего грида установим формат выделения:
Ext.create('Ext.grid.Panel', { title: 'Пользователи', height: 250, width: 500, store: store, selType: 'cellmodel', .......................
Затем изменим строку:
selectionModel.select(rowIndex);
на следующую:
selectionModel.setCurrentPosition({ row: rowIndex, column: colIndex });