Моя иерархическая структура данных не работает как поставщик данных

#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}"