С точки зрения целостности данных, я думаю, что иметь объект с дочерними элементами в качестве ArrayCollection просто замечательно.Итак, почему мой AdvancedDataGrid renderProvider отображает каждый дочерний узел?Я просто не понимаю(Мой renderProvider - это DataGrid).Это приводит к созданию новой сетки данных для каждого нового элемента.
Я надеюсь, что мне не нужно переписывать мою структуру данных.
Вот код:
recalls.addItem(
new ObjectProxy(
{
selected:false,
id:1001,
cpty:'MERRILLINTL',
ticker:'PG:IT',
secId:'7743621',
origQty:8150,
currQty:8150,
rebate:-5.25,
div:100,
dueDate:'7/1/2011',
status:'New',
comments:'',
children:new ArrayCollection( [
{
sid:96548714,
type:'BVRI',
secType:'COMMON',
ticker:'PG:IT',
cpty:'MERRILLINTL',
cusip:'T8380H120',
sedol:'7743621',
rate:-5.25,
qty:20000,
recallQty:20000
},
{
sid:23544165,
type:'BVRI',
secType:'COMMON',
ticker:'PG:IT',
cpty:'MERRILLINTL',
cusip:'T8380H120',
sedol:'7743621',
rate:-5.25,
qty:5000,
recallQty:5000
}
]),
trades:new ArrayCollection([
{
sid:12211214,
type:'BVRI',
secType:'COMMON',
ticker:'PG:IT',
cpty:'MERRILLINTL',
cusip:'T8380H120',
sedol:'7743621',
rate:-5.25,
qty:1700,
recallQty:1700
},
{
sid:32112256,
type:'BVRI',
secType:'COMMON',
ticker:'PG:IT',
cpty:'MERRILLINTL',
cusip:'T8380H120',
sedol:'7743621',
rate:-5.25,
qty:6450,
recallQty:6450
}
])
}
)
);
recalls.addItem(
new ObjectProxy(
{
selected:false,
id:1002,
cpty:'GSAL',
ticker:'TH:CA',
secId:'82934H101',
origQty:5400,
currQty:5400,
rebate:-2,
div:100,
dueDate:'8/9/2011',
status:'New',
comments:'',
children:new ArrayCollection([
{
sid:32555688,
type:'BVRI',
secType:'COMMON',
ticker:'TH:CA',
cpty:'GSAL',
cusip:'88338H100',
sedol:2889906,
rate:-2,
qty:7500,
recallQty:7500
},
{
sid:65487745,
type:'BVRI',
secType:'COMMON',
ticker:'TH:CA',
cpty:'GSAL',
cusip:'88338H100',
sedol:2889906,
rate:-2,
qty:3500,
recallQty:3500
}
]),
trades:new ArrayCollection([
{
sid:14445784,
type:'BVRI',
secType:'COMMON',
ticker:'TH:CA',
cpty:'GSAL',
cusip:'88338H100',
sedol:2889906,
rate:-2,
qty:3200,
recallQty:3200
},
{
sid:96552544,
type:'BVRI',
secType:'COMMON',
ticker:'TH:CA',
cpty:'GSAL',
cusip:'88338H100',
sedol:2889906,
rate:-2,
qty:2200,
recallQty:2200
}
])
}
)
);
Приведенная выше коллекция массивов является dataProvider для моей AdvancedDataGrid.Вот DP для ADG.
<mx:dataProvider>
<mx:HierarchicalData
source="{recalls}"/>
</mx:dataProvider>
Вот код для renderProvider для этого ADG:
<mx:rendererProviders>
<mx:AdvancedDataGridRendererProvider
depth="2"
columnIndex="1"
renderer="com.controls.GroupedTradesGrid"
columnSpan="0"/>
</mx:rendererProviders>
Внутри этого renderProvider я использую этот код для установки DP:
override public function set data(value:Object):void
{
// If using the array data source, use this instead:
dataProvider = value;
// adjust rowCount
this.rowCount = dataProvider.length + 1;
}
По сути, создается новая DataGrid для каждого элемента в коллекции 'children' ... вместо создания одной сетки данных и заполнения ее коллекцией 'children'.Это почему?
Спасибо за полезные советы!