我在我的 AdvancedDatagrid 中显示分层数据。我已经为显示分层的列设置了一个复选框作为 itemrenderer。视图中的每个叶节点旁边都有复选框。假设 A 组节点有 A1、A2、A3 等作为子节点,B 组有 B1、B2 等作为子节点。所有子节点(即叶节点)旁边都有复选框。如果我自动选择 A 组下的任何复选框,其他组下的复选框应该被禁用,并且在取消选中复选框时它应该启用。
请让我知道如何实现它。
我在我的 AdvancedDatagrid 中显示分层数据。我已经为显示分层的列设置了一个复选框作为 itemrenderer。视图中的每个叶节点旁边都有复选框。假设 A 组节点有 A1、A2、A3 等作为子节点,B 组有 B1、B2 等作为子节点。所有子节点(即叶节点)旁边都有复选框。如果我自动选择 A 组下的任何复选框,其他组下的复选框应该被禁用,并且在取消选中复选框时它应该启用。
请让我知道如何实现它。
最好的方法是在数据模型中创建层次树。因此,对于每个具有子节点的节点,如果您有一个选定的属性,您还将修改这些子节点的选定属性。这样,您的 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 恰好是您用来显示该表示的当前视图。