Actionscript 3 如何使AdvancedDataGridRenderProvider呈现ArrayCollection?
我有一个像这样的对象:Actionscript 3 如何使AdvancedDataGridRenderProvider呈现ArrayCollection?,actionscript-3,flex3,Actionscript 3,Flex3,我有一个像这样的对象: [Bindable] public class MyRecord implements ValueObject { public var recall_id:int; public var recall_type:String; public var selected:Boolean = false; public var qty:Number; public var curr_qty:Number; public var
[Bindable]
public class MyRecord implements ValueObject
{
public var recall_id:int;
public var recall_type:String;
public var selected:Boolean = false;
public var qty:Number;
public var curr_qty:Number;
public var due_date:String;
public var status:String;
public var comments:String;
public var groupedTrades:ArrayCollection = new ArrayCollection();
}
我在ArrayCollection中填充了一堆数据,然后将其用作AdvancedDataGrid的数据提供程序:
<mx:dataProvider>
<mx:HierarchicalData
source="{model.recalls}"
childrenField="groupedTrades"/>
</mx:dataProvider>
问题是,我的renderProvider的方法被调用用于它所属ADG的数据提供程序中的每个记录。这相当于为每个交易分组交易创建一个全新的数据网格
我如何解决这个问题?我很困惑
谢谢你的建议,感恩节快乐
更新:我刚从一个博客中找到一些硬编码的数组,它正在做我想做的事情;作为AdvancedDataGrid的渲染器提供的DataGrid
private var masterData:Array = [
{ OrderId: 10248, CustomerId:"WILMK", EmployeeId:5, OrderDate:"1-Feb-2007",
children:[
[
{ProductId:11, ProductName:"Quesbo Cabrales", UnitPrice:14, Quantity:12, Discount:0, Price:168},
{ProductId:42, ProductName:"Singaporean Hokkien Fried Mee", UnitPrice:9.8, Quantity:10, Discount:0, Price:98},
{ProductId:42, ProductName:"Mozzarella di Giovanni", UnitPrice:34.8, Quantity:5, Discount:0, Price:174}
]
]}
]
]}
这是来自这个博客:
当我调试我的集合时,我使用的是arraycollection,因为它是从服务器返回的,我看到如下情况:
[Bindable]
public class MyRecord implements ValueObject
{
public var recall_id:int;
public var recall_type:String;
public var selected:Boolean = false;
public var qty:Number;
public var curr_qty:Number;
public var due_date:String;
public var status:String;
public var comments:String;
public var groupedTrades:ArrayCollection = new ArrayCollection();
}
调用[0]-重新调用记录对象
-支柱
-支柱
-groupedTrades-我要用作renderProvider的DP的ArrayCollection
groupedTrades[0]-通用对象
groupedTrades[1]-通用对象
我看不出博客中的硬编码版本与我使用的服务数据之间的区别。我错过了什么
谢谢大家! 已解决:
问题是,当服务器响应时,我是如何将值分配给“groupedTrades”的。我做得完全错误:我做的是直接赋值,而不是将ArrayCollection作为元素添加到“groupedTrades”ArrayCollection
我是这样做的:
for ( var i:int=0;i<result.length;i++ ){
var item:Object = result[i];
var recall:RecallRecord = new RecallRecord();
recall.counterparty_shortcode = item.counterparty_shortcode;
recall.comments = item.comments;
recall.curr_qty = item.curr_qty;
recall.div_percent = item.div_percent;
recall.due_date = df.format( item.due_date );
recall.qty = item.qty;
recall.rebate_rate = item.rebate_rate;
recall.recall_id = item.recall_id;
recall.recall_type = item.recall_type;
recall.sedol = item.sedol;
recall.status = item.status;
recall.ticker = item.ticker;
recall.groupedTrades = item.groupedTrades;
model.recalls.addItem( recall );
}
与此相反:
for ( var i:int=0;i<result.length;i++ ){
var item:Object = result[i];
var recall:RecallRecord = new RecallRecord();
recall.counterparty_shortcode = item.counterparty_shortcode;
recall.comments = item.comments;
recall.curr_qty = item.curr_qty;
recall.div_percent = item.div_percent;
recall.due_date = df.format( item.due_date );
recall.qty = item.qty;
recall.rebate_rate = item.rebate_rate;
recall.recall_id = item.recall_id;
recall.recall_type = item.recall_type;
recall.sedol = item.sedol;
recall.status = item.status;
recall.ticker = item.ticker;
recall.groupedTrades.addItem( item.groupedTrades );
model.recalls.addItem( recall );
}
这看起来很奇怪,如果我硬编码我的分层数据,一切都很好,但当我切换到使用对象的数组集合时,它根本不起作用。有什么区别?我编写“MyRecord”对象的方式是否没有正确显示分层数据结构?我是否需要创建自定义数据描述符?
for ( var i:int=0;i<result.length;i++ ){
var item:Object = result[i];
var recall:RecallRecord = new RecallRecord();
recall.counterparty_shortcode = item.counterparty_shortcode;
recall.comments = item.comments;
recall.curr_qty = item.curr_qty;
recall.div_percent = item.div_percent;
recall.due_date = df.format( item.due_date );
recall.qty = item.qty;
recall.rebate_rate = item.rebate_rate;
recall.recall_id = item.recall_id;
recall.recall_type = item.recall_type;
recall.sedol = item.sedol;
recall.status = item.status;
recall.ticker = item.ticker;
recall.groupedTrades.addItem( item.groupedTrades );
model.recalls.addItem( recall );
}