質問

私の Flex アプリでは、列の幅と可視性を XML ファイルに保存しています。アプリが読み込まれると、XML ファイルから読み取り、必要に応じて列の値を設定します。

for(i = 0; i < columnsOrder.length; i++){
    newOrder[i] = myDG.columns[Number(columnsOrder[i]) - 1];
    newOrder[i].visible = (Number(columnsVisiblity[i]) == 1);
    newOrder[i].width = Number(columnsWidth[i]);
}
myDG.columns = newOrder;
myDG.invalidateList();

問題は可視性の設定のようです(可視フィールドは正しく設定されますが、幅が台無しになります)...幅を設定した後(ループの外側)とループの前でも設定してみました。可視性に関して何もしなければ、列のサイズが適切に変更されます。

何か案は?

役に立ちましたか?

解決

あなたのクラスファイルの先頭にインポート文を追加します:

mx.core.mx_internalインポート

すると、列の所有者を削除幅を変更、mx_internal名前空間を使用して削除してから、親をreasignます:

public static function resizeColumn(col:DataGridColumn, size:int):void
    {
        var owner:* = col.mx_internal::owner
        col.mx_internal::owner = null;

        col.width = size;

        col.mx_internal::owner = owner;
    }

このは(まあ、それは宣誓の数日後に私たちのためにやった)トリックを行うべき

他のヒント

データグリッドでhorizo​​ntalScrollPolicyをfalseに設定していますか?

「DataGrid のhorizo​​ntalScrollPolicy プロパティが false の場合、表示されているすべての列が表示可能領域に収まる必要があります。列の合計幅が表示可能領域に対して小さすぎるか大きすぎる場合、DataGrid は常に列の幅を尊重するとは限りません。」

http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridColumn.html#width

私はそれが二度の関数で上記ループを呼び出すことによって、仕事を得ることができた...それは、二度目に表示可能な列を追加する最初の時間は、それが正しいの幅を設定します。ソリューションベストではないが、私はそれに任意のより多くの時間を費やすことはできません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top