2013-08-07 2 views
0

Я пытаюсь создать сетку в GWT, представляющую иерархические данные. Столбцы для разных уровней будут одинаковыми и представлять, если продукт доступен для категории или нет.Создайте иерархическую динамическую сетку с GWT

Нечто подобное:

     A | B | C | D 
+ Product 1.1   X  X X 
    + Product 1.2  X  X X 
    + Product 1.3  X   X 
+ Product 2.1    X 
    + Product 2.2   X 
... 

я, хотя я мог бы использовать CellTable и добавить обработчик, чтобы показать/скрыть строки, но как же мне удается скрываться все потомок?

+0

Вы посмотрели пользовательскую сетку в витрине GWT, [здесь] (http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCustomDataGrid)? Он показывает расширяемую строку. Я бы предположил, что вам нужно что-то вроде набора ShowingFriends, который содержит продукты, которые в настоящее время отображаются. –

+0

Именно то, что я искал! Благодарю. – algiogia

+0

К сожалению, данный пример не работает для GWT 2.4: он не поддерживает пользовательские TableBuilders. В любом случае, я создал таблицу с настраиваемыми столбцами. Просто нужно добавить прослушиватель событий в строки, но не знаете, как это сделать. – algiogia

ответ

0

Так вот мое решение:

Как это не возможно, чтобы добавить слушателя к отдельным строкам (за ClickHandler исключением), ни для создания пользовательских строк (я использую GWT 2.4) я должен был создать пользовательский колонка. Я тогда создал NodeCell, простой вариант ButtonCell, который показывает кнопку +/- до текст. Если столбец является «узлом», он будет использовать NodeCell. Нажатие на кнопку запускает ExpandEvent на EventBus.

Будучи не в состоянии найти способ получить виджет, представляющий строку, в конструкторе моей пользовательской таблицы я добавил обработчик к EventBus что изменяет стиль строки, извлеченной с помощью getRowElement() , Параметр в ExpandEvent содержит индекс строки.

0

В основном, работа в MVC. Контроллер ловит событие, обновляет модель и затем просит датаподавателя обновить дисплей.

Простейший, о котором я могу думать, - это когда вы поймаете событие, попросив скрыть потомок, например Product 2.1, через объекты Model (список, который я предполагаю), и соответственно обновить дочерний элемент. Затем обновите cellTable с помощью соответствующих методов на dataProvider.

Смежные вопросы