0

AdvancedDatagrid に階層データを表示します。階層を表示する列のアイテムレンダラーとしてチェックボックスを設定しました。ビュー内の各リーフノードには、その横にチェックボックスがあります。グループ 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' に 'selected、enabled、alive のいずれか' のプロパティがあり、そのプロパティは setter である必要があり、そのプロパティはその子にも存在するように変更されます。このようにして、データの状態は常にデータ モデルに保存され、ADG はたまたまその表現を表示するために使用する現在のビューになります。

于 2012-11-19T18:29:47.097 に答える