Поиск по этому блогу

понедельник, 26 ноября 2012 г.

Работа с CheckBoxSelectionModel в Grid. GXT

Модель выделения CheckBoxSelectionModel  в Grid используется для того, чтобы можно было выделять строки и помечать выделенные строки галочками. Скорее всего эту модель выделения будут использовать когда есть необходимость выделить какую-то часть строк и совершить над ней определенные действия, например удалить или сформировать какой-нибудь отчет.

Перед тем как создать таблицу нужно для этого кое-что подготовить.
Создаем список конфигураций для столбцов таблицы.
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
Создаем store для хранения моделей, которые являются строками таблицы.
ListStore store = new ListStore<ModelData>();

Нужно определить CheckBoxSelectionModel  как столбец таблицы и добавить его в список конфигураций для столбцов таблицы.

CheckBoxSelectionModel<ModelData> sm = new CheckBoxSelectionModel<ModelData>();
ColumnConfig checkConfig = sm.getColumn();
configs.add(checkConfig);

Создаем остальные конфигурации для столбцов таблицы.
ColumnConfig column = new ColumnConfig();
column.setHeader("Name");
column.setWidth(130);
column.setId("name");
configs.add(column);

column = new ColumnConfig();
column.setHeader("Surname");
column.setId("surname");
column.setWidth(130);
configs.add(column);

column = new ColumnConfig();
column.setHeader("Age");
column.setId("age");
column.setWidth(120);
configs.add(column);

Создаем модель столбцов таблицы на основании списка конфигураций столбцов.
ColumnModel cm = new ColumnModel(configs);
А потом уже на основании store и модели столбцов создаем саму таблицу.
EditorGrid grid = new EditorGrid<ModelData>(store, cm);

Необходимо установить CheckBoxSelectionModel в качестве модели выделения элементов таблицы
grid.setSelectionModel(sm);
и установить в качестве плагина для таблицы
grid.addPlugin(sm);

Метод addPlugin() необходим для того, чтобы работал чекбокс в заголовке столбца - позволял выделить все строки таблицы или снять выделение со всех строк таблицы (если этого не сделать, тогда все будет отображаться правильно, но чекбокс в заголовке столбца будет не кликабельным).

Удаление выделенных галочками строк.


При работе с таблицами пользователь скорее всего будет иметь две стандартные возможности - добавлять и удалять строки в таблицу. Если используется модель выделения CheckBoxSelectionModel,  то подразумевается, что строку можно будет выделить - поставить галочку, а потом строки помеченные галочками удалить.

// получаем у таблицы модель выделения
GridSelectionModel<ModelData> selectionModel = grid.getSelectionModel();
// получаем у модели выделения выделенные строки
List<ModelData> list = selectionModel.getSelectedItems();
// пробегаем в цикле выделенные строки 
// и удаляем их из хранилища таблицы
for (ModelData m : list) {    
  grid.getStore().remove(m);
}

1 комментарий: