我正在使用AdvancedDataGrid来显示分层数据。 DataProvider是一个对象,children字段是一个对象的ArrayCollection。当我更新ArrayCollection中的一个对象时,我想要刷新网格。
经过研究,我明白这不会自动发生。即使我使用itemUpdated()然后刷新AC也没有。即使我调用executeBindings(递归)也没有。
我知道要聪明一点,我应该一直使用ObjectProxy,因为这可以解决我所有的问题。我现在的问题是如何在不完全修改我的Hierarchical Data对象的情况下解决这个问题?
我尝试让我的Value Objects扩展ObjectProxy但是没有做到这一点。有优雅的解决方案吗?类型对象甚至可以利用ObjectProxy类?
感谢任何有用的提示。
这是HierarchicalData代码:
<mx:HierarchicalData
source="{model.myObject}"
childrenField="trades"/>
这是'myObject'类:
[Bindable]
public class MyObject implements ValueObject
{
public var qty:Number;
public var status:String;
public var comments:String;
public var modified_by:String;
public var modified_date:Date;
public var trades:ArrayCollection = new ArrayCollection();
}
'trades'ArrayCollection包含一系列在此定义的Trade对象:
[Bindable]
public class Trade implements ValueObject
{
public var selected:Boolean = false;
public var quantity:Number;
public var modified_by:String;
public var modified_date:Date;
}
以下是我在服务器返回数据后填充集合的方法:
for ( var i:int=0;i<result.length;i++ ){
var item:Object = result[i];
var recall:MyObject = new MyObject();
recall.comments = item.comments;
recall.qty = item.qty;
recall.status = item.status;
recall.modified_by = item.modified_by;
recall.modified_date = item.modified_date;
recall.trades.addItem( item.trades );
model.recalls.addItem( recall );
}
答案 0 :(得分:0)
您只需要为您的AdvancedDataGrid使用可绑定ArrayCollection
作为dataProvider
。您可以查看示例here
答案 1 :(得分:0)
一周前我遇到过这个问题。我终于找到了一个解决方案(这是我的应用程序的initialisationComplete处理程序):
// lets create the model
model = new ArrayCollection();
testPlanHierarchy = new HierarchicalData();
// lets create the bindings
BindingUtils.bindProperty(testPlanHierarchy,"source",this,"model");
BindingUtils.bindProperty(testPlanADG,"dataProvider",this,"testPlanHierarchy")
testPlanADG
当然是我的AdvancedDataGrid,我的model
是一个类型化对象的ArrayCollection。
[Bindable]
标记的元素为:
model