Что не так с моей структурой данных? - PullRequest
0 голосов
/ 01 ноября 2011

С точки зрения целостности данных, я думаю, что иметь объект с дочерними элементами в качестве 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'.Это почему?

Спасибо за полезные советы!

Ответы [ 2 ]

0 голосов
/ 01 ноября 2011

Я нашел способ обойти это, но я не думаю, что это правильное решение;однако, это должно будет сделать пока.Я предполагаю, что я использовал неправильный синтаксис и, заключив свойство 'children' в скобки, я был бы хорош: Примерно так:

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
                        }
                    ])]
0 голосов
/ 01 ноября 2011

Не уверен, что я понимаю, что вы делаете, но ваш dataProvider должен быть ArrayCollection, а не объектом.

dataProvider = "{ObjectProxy.children}"
...