就數據完整性而言,我認爲把一個子對象作爲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
}
])
}
)
);
以上的ArrayCollection是dataProvider中我AdvancedDataGrid。這是ADG的DP。
<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'集合中。這是爲什麼?
感謝您的任何有用的提示!