Flex AdvancedDataGrid分层视图itemrenderer

时间:2012-11-19 13:26:34

标签: flex hierarchical-data itemrenderer advanceddatagrid

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

请告诉我如何实现它。

1 个答案:

答案 0 :(得分:0)

执行此操作的绝对最佳方法是在数据模型中创建分层树。因此,对于具有子项的每个节点,如果您具有选定的属性,则还应修改这些子项上的选定属性。这样,ADG仅仅是数据状态的视图。然后,您可以将复选框的更改事件绑定到此选定属性。

[编辑以显示树样本]

与XML类似,您的数据结构可以具有树叶/节点范例 例如(伪代码):

“人物”树:

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知道如何使用它,但是如果你的'node'被命名为其他东西,它们是一个允许你将它设置为其他东西的字段。

所以要扩展这个'Person'将拥有一个'选中,启用,活着,无论哪个'的属性,并且该属性需要是一个setter,然后修改该属性也存在于它的子节点中。通过这种方式,数据的状态始终保留在数据模型中,ADG恰好是用于显示该表示的当前视图。