每当我对数据结构执行许多更新或搜索操作时,我总是将任何串行数据(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;
}
}