Apache flex Flex AdvancedDataGrid分层视图项目渲染器

Apache flex Flex AdvancedDataGrid分层视图项目渲染器,apache-flex,hierarchical-data,itemrenderer,advanceddatagrid,Apache Flex,Hierarchical Data,Itemrenderer,Advanceddatagrid,我在AdvancedDatagrid中显示分层数据。我为显示层次结构的列设置了一个复选框作为itemrenderer。视图中的每个叶节点旁边都有一个复选框。 假设A组节点有A1、A2、A3等作为子节点,B组有B1、B2等作为子节点。所有子节点(即叶节点)旁边都有复选框。如果我自动选中组A下的任何复选框,则其他组下的复选框应被禁用,并且在取消选中复选框时,应启用该复选框 请告诉我如何实现它。最好的方法是在数据模型中创建层次结构树。因此,对于每个具有子节点的节点,如果您有一个选定的属性,那么您还将修

我在AdvancedDatagrid中显示分层数据。我为显示层次结构的列设置了一个复选框作为itemrenderer。视图中的每个叶节点旁边都有一个复选框。 假设A组节点有A1、A2、A3等作为子节点,B组有B1、B2等作为子节点。所有子节点(即叶节点)旁边都有复选框。如果我自动选中组A下的任何复选框,则其他组下的复选框应被禁用,并且在取消选中复选框时,应启用该复选框


请告诉我如何实现它。

最好的方法是在数据模型中创建层次结构树。因此,对于每个具有子节点的节点,如果您有一个选定的属性,那么您还将修改这些子节点上的选定属性。这样,您的ADG仅仅是数据状态的一个视图。然后将复选框的更改事件绑定到此选定属性

[编辑以显示树示例]

与XML类似,数据结构可以有一个树叶/节点范例 例如(psuedo代码):

“人”之树:

因此,由于您有一个“children”属性,HierarchycalData知道如何使用它,但它们是一个字段,如果您的“节点”命名为其他名称,则可以将其设置为其他名称


因此,为了扩展这个功能,每个“人”都有一个“已选择、已启用、处于活动状态”的属性,该属性需要是一个setter,然后setter会修改它的子级中也存在的属性。这样,数据的状态始终保留在数据模型中,而ADG恰好是用于显示该表示的当前视图。

如何在分层数据中获取选定项的父节点您需要Hierarchy CollectionView的getParent方法
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'