2011-07-22 14 views
0

私は非常に簡単なコードを書いて、columnstretchとcalllaterの動作を理解しましたが、resizeGrid関数がうまく動作しませんでした。ここで何が起こっているのですか?フレックス3のデータグリッドは伸ばさない

<mx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 

     [Bindable] 
     public var denemelist:ArrayCollection; 


     private function calculateHeight(l:int):Number{ 
      return deneme.measureHeightOfItems(0, l) + deneme.headerHeight;    
     } 

     public function resizeGrid():void{ 
     if(denemelist && deneme) 
      deneme.height = calculateHeight(denemelist.length); 
     } 

     public function preinit():void { 
      denemelist = new ArrayCollection([ 
      {former:"sdfad", latter:"sdfgs"}, 
      {former:"sdfgsd", latter:"sdfgsfd"}  
      ]); 
     } 

     public function test():void { 
     denemelist.addItem({former:"sdfgsdf", latter:"sdfgdsgf"}); 
     } 
    ]]> 
</mx:Script> 

<mx:VBox width="100%" height="500"> 
<mx:DataGrid 
    width="100%" 
    resizeEffect="Resize" 
    horizontalScrollPolicy="off" verticalScrollPolicy="off" 
    id="deneme" 
    variableRowHeight="true" 
    editable="false" 
    dataProvider="{denemelist}" 
    styleName="phrDataGrid" 
    columnStretch="callLater(resizeGrid)"> 
     <mx:columns> 
      <mx:DataGridColumn dataField="former" headerText="former"/> 
      <mx:DataGridColumn dataField="latter" headerText="latter"/> 
     </mx:columns> 
</mx:DataGrid> 

<mx:Button label="deneme1" click="test()" /> 
</mx:VBox> 

答えて

0

私は、DataGridは、関数を呼び出している時点ではまだ更新されているとは思いません。しかし、dgの高さから離して、次にrowCountをリスト内の項目数に設定することもできます。

HTH; Amy

+0

あなたのアドバイスはうまくいった、ありがとう。しかし、resizeGrid()関数がまったく呼び出されない理由はまだ説明していませんか? – bfaskiplar

+0

カラム間のセパレータをドラッグしていますか?私はあなたがあなたのresizeGridハンドラを置くイベントを発生させるためにあなたがしなければならないことだと思います。 –

+0

ええ、あなたは正しいです。私は外から関数を呼び出すことを忘れていました。私はそれが配列コレクションの長さの変化を検出すると思った。この側面では、あなたのやり方がより適切です。 – bfaskiplar

関連する問題