データ構造に対して多くの更新または検索操作を実行するときは常に、シリアル データ (xml、json など) を厳密に型指定されたモデル クラスに変換します。これにより、データ操作を可能な限り迅速に実行できます。AdvancedDataGrid は HierarchicalData クラスを使用して構造を記述するため、モデルがその構造に準拠していることを確認する (またはカスタム記述子を作成する) だけで済みます。
例えば:
public class MyBranchNode extends EventDispatcher
{
public function MyBranchNode(data:XML, target:IEventDispatcher = null)
{
super(target);
setMemento(data);
}
public var children:Array;
private var _label:String;
[Bindable(event = "labelChange")]
public function get label():String
{
return _label;
}
public function set label(value:String):void
{
if(_label == value)
return;
_label = value;
this.dispatchEvent(new Event("labelChange"));
}
/**
* Parse your XML into into binary data
*/
private function setMemento(data:XML):void
{
this.label = data.label;
for each(var child:XML in data.children())
{
if(this.children == null)
this.children = [];
this.children.push(new MyLeafNode(child));
}
}
}
public class MyLeafNode extends EventDispatcher
{
public function MyLeafNode(data:XML, target:IEventDispatcher = null)
{
super(target);
setMemento(data);
}
private var _label:String;
[Bindable(event = "labelChange")]
public function get label():String
{
return _label;
}
public function set label(value:String):void
{
if(_label == value)
return;
_label = value;
this.dispatchEvent(new Event("labelChange"));
}
/**
* Parse your XML into into binary data
*/
private function setMemento(data:XML):void
{
this.label = data.label;
}
}