0

advanceddatagrid-columns の幅に問題がありました。まず、私のレイアウトは HDividedBox です。左側にはナビゲーションがあり、右側には高度なデータグリッドを含むモジュールがあります。

左側: ナビゲーション

右側: モジュール (例: advanceddatagrid)

ほとんどの列は固定幅で、一部は minWidth です。これで、最初は列の幅が正しいです。

したがって、問題は、新しいモジュールをロードして後で高度なデータグリッドをリロードするたびに、モジュールをロードする過程で何も変更しないにもかかわらず、列の初期幅が大きく異なることです。固定幅も minWidths も最初は正しくありません。最近、列の幅が間違っている場合の解決策があるのを見ました。それは次のようになります。

var oldPolicy:String = advanceddatagrid.myScrollPolicy;
advanceddatagrid.myScrollPolicy = ScrollPolicy.ON;

for(var i:int = 0; i < advanceddatagrid.columns.length; i++) {
    var column:AdvancedDataGridColumn = advanceddatagrid.columns[i] as AdvancedDataGridColumn;
    advanceddatagrid.column.width = column.width;
}
advanceddatagrid.validateNow();             
advanceddatagrid.myScrollPolicy = oldPolicy;                
advanceddatagrid.validateNow();

全体として、これは ScrollPolicy の一時的な変更であり、列幅を再設定してから元に戻します。しかし、それでもうまくいきません。

誰も手がかりを持っていますか?

4

1 に答える 1

0

役立つかもしれないいくつかの関連参照(最初のものは私のために働いた):

http://userflex.wordpress.com/2011/04/14/force-resize-datagrid/

http://forums.adobe.com/message/4285461

最初の投稿を要約すると (クレジットは Nick Schneble に送られます):

public function resizeColumns () : void
{
    grid.validateNow ();
    // forces the columns to size themselves properly
    for each (var column : AdvancedDataGridColumn in grid.columns)
    {
        column.width = column.width;
    } 
}

少しばかげているように思えるかもしれませんが、データ グリッドの基になるデータが変更されるたびにこのメソッドを実行すると、列が美しくレイアウトされます。

于 2013-01-25T18:23:56.817 に答える