Flex AdvancedDataGrid иерархический просмотрщик элементов представления
Я отображаю иерархические данные в моем AdvancedDatagrid. Я установил флажок в качестве itemrenderer для столбца, который отображает иерархический. Каждый конечный узел в представлении имеет флажок рядом с ним. Предположим, что узел группы A имеет A1, A2, A3 и т. Д. В качестве дочерних узлов, а группа B имеет B1, B2 и т. Д. В качестве дочерних узлов. Все дочерние узлы, т.е. конечные узлы, будут иметь флажок рядом с ним. Если я выбираю какой-либо из флажков в группе А, автоматически флажки в других группах должны быть отключены, а при снятии флажка они должны быть включены.
Пожалуйста, дайте мне знать, как этого добиться.
1 ответ
Абсолютно лучший способ сделать это - создать иерархическое дерево в вашей модели данных. Поэтому для каждого узла, у которого есть дочерние элементы, если у вас есть выбранное свойство, вы также измените выбранное свойство для этих дочерних элементов. Таким образом, ваш ADG - это просто представление о состоянии данных. Затем вы связываете событие изменения флажка с этим выбранным свойством.
[Изменить, чтобы показать образец дерева]
Так что, как и в XML, ваши структуры данных могут иметь парадигму листьев / узлов дерева. Например (код psuedo):
Дерево "Людей":
var gf:Person = new Person();
gf.name = 'Frank';
var gm:Person = new Person();
gm.name = 'Elise';
var c1:Person = new Person();
c1.name = 'Mary';
var c2:Person = new Person();
c2.name = 'Frank Jr';
var c3:Person = new Person();
c3.name = 'Sam';
var couple:PersonGroup = new PersonGroup();
couple.relation = [gm, gf];
couple.children = [c1, c2, c3];
//now you add another 'married PersonGroup to child one, and their children'
Таким образом, поскольку у вас есть свойство 'children', HierarchicalData знает, как с этим работать, но это поле, которое позволяет вам установить его на что-то другое, если ваш 'узел' назван как-то еще.
Таким образом, чтобы расширить это значение, каждый "Персона" должен иметь свойство "выбрано, включено, живо, в зависимости от того", и это свойство должно быть установщиком, который затем изменяет это свойство, также присутствующее в его дочерних элементах. Таким образом, состояние ваших данных всегда сохраняется в вашей модели данных, и ADG просто оказывается текущим представлением, которое вы используете для отображения этого представления.