0

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

请让我知道如何实现它。

4

1 回答 1

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'

因此,由于您有一个“子”属性,因此 HierarchicalData 知道如何使用它,但是如果您的“节点”被命名为其他名称,则它们是一个允许您将其设置为其他内容的字段。

因此,为了扩展这个,每个“Person”都将具有一个“已选择、启用、活动,无论哪个”的属性,并且该属性需要是一个 setter,然后修改该属性也存在于它的子项中。通过这种方式,您的数据状态始终保留在您的数据模型中,而 ADG 恰好是您用来显示该表示的当前视图。

于 2012-11-19T18:29:47.097 回答