2011-10-31 9 views
0

データの完全性の点では、ArrayCollectionとしての子を持つオブジェクトを持つことは問題ないと思います。だから、私のAdvancedDataGrid renderProviderが代わりに各子ノードをレンダリングするのはなぜですか?私はそれを得ていない。 (私のrenderProviderはDataGridです)。これにより、新しい項目ごとに新しい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が私たAdvancedDataGridのためのdataProviderです。ここにADGのDPがあります。ここで

<mx:dataProvider>  

         <mx:HierarchicalData 
          source="{recalls}"/>  

        </mx:dataProvider> 

このADG用renderProviderのコードです:このrenderProviderインサイド

<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; 
     } 

基本的には、新しいDataGridがあります'children'コレクション内の各要素に対して作成されます。作成される1つのDataGridと、それを設定する 'Children'コレクションの代わりに作成されます。何故ですか?

ありがとうございました!

答えて

0

あなたが何をしているのかわかりませんが、dataProviderはオブジェクトではなくArrayCollectionでなければなりません。

dataProvider = "{ObjectProxy.children}" 
0

私はこれを回避する方法を見つけましたが、それは適切な解決策ではないと思います。しかし、それは今の間しなければならないでしょう。私は間違った構文を使用していたと思いますが、括弧で囲まれた '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 
         } 
        ])] 
関連する問題