#actionscript-3 #apache-flex #flex3
#actionscript-3 #apache-flex #flex3
Вопрос:
С точки зрения целостности данных, я думаю, что наличие объекта с его дочерними элементами в виде коллекции ArrayCollection просто отлично. Итак, почему мой расширенный поставщик визуализации данных отображает каждый дочерний узел вместо этого? Я просто не понимаю. ( Мой поставщик визуализации — это сетка данных). Это приводит к созданию новой сетки данных для каждого нового элемента.
Я надеюсь, что мне не придется переписывать свою структуру данных.
Вот код:
recalls.addItem(
new ObjectProxy(
{
dueDate:'7/1/2011',
status:'New',
comments:'',
children:new ArrayCollection( [
{
rate:-5.25,
qty:20000,
recallQty:20000
},
{
rate:-5.25,
qty:5000,
recallQty:5000
}
]),
items:new ArrayCollection([
{
rate:-5.25,
qty:1700,
recallQty:1700
},
{
rate:-5.25,
qty:6450,
recallQty:6450
}
])
}
)
);
recalls.addItem(
new ObjectProxy(
{
selected:false,
id:1002,
rebate:-2,
div:100,
dueDate:'8/9/2011',
status:'New',
comments:'',
children:new ArrayCollection([
{
sid:32555688,
rate:-2,
qty:7500,
recallQty:7500
},
{
rate:-2,
qty:3500,
recallQty:3500
}
]),
items:new ArrayCollection([
{
rate:-2,
qty:3200,
recallQty:3200
},
{
rate:-2,
qty:2200,
recallQty:2200
}
])
}
)
);
Приведенная выше коллекция массивов является поставщиком данных для моей расширенной сетки данных. Вот DP для ADG.
<mx:dataProvider>
<mx:HierarchicalData
source="{recalls}"/>
</mx:dataProvider>
Вот код для поставщика визуализации для этого ADG:
<mx:rendererProviders>
<mx:AdvancedDataGridRendererProvider
depth="2"
columnIndex="1"
renderer="com.controls.GroupedTradesGrid"
columnSpan="0"/>
</mx:rendererProviders>
Внутри этого поставщика визуализации я использую этот код для установки 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;
}
По сути, для каждого элемента в «дочерней» коллекции создается новая сетка данных … вместо того, чтобы создавать одну сетку данных и заполнять ее «дочерней» коллекцией. Почему это так?
Спасибо за любые полезные советы!
Ответ №1:
Не уверен, что я понимаю, что вы делаете, но ваш поставщик данных должен быть коллекцией массивов, а не объектом.
dataProvider = "{ObjectProxy.children}"