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>
あなたのアドバイスはうまくいった、ありがとう。しかし、resizeGrid()関数がまったく呼び出されない理由はまだ説明していませんか? – bfaskiplar
カラム間のセパレータをドラッグしていますか?私はあなたがあなたのresizeGridハンドラを置くイベントを発生させるためにあなたがしなければならないことだと思います。 –
ええ、あなたは正しいです。私は外から関数を呼び出すことを忘れていました。私はそれが配列コレクションの長さの変化を検出すると思った。この側面では、あなたのやり方がより適切です。 – bfaskiplar