2

どの列が表示されているか、および各列の幅を決定するために、xml データを取得しています。私のデータグリッドの幅は、HDividedBox の片側にあるため、変更される可能性があります。可視性の部分は機能しますが、幅を設定すると頭痛の種になります。コードは次のとおりです。

for(loop through column data retrieve from XML)
{ 
    newData[i] = dg.columns[Number(columnsOrder[i]) - 1];
    newData[i].visible = (Number(columnsVisibility[i]) == 1);
    newData[i].width = Number(columnsWidth[i]);
    trace(newData[i].headerText + " w:" + newData[i].width.toString() + " v:" + newData[i].visible.toString());
}
dg.columns = newData;
dg.invalidateList();

トレースでは、最初の 2 つの項目の幅は正しいですが、連続した項目では「20」と表示されます...

Date w:240 v:true
Title w:184 v:true
Requestor w:20 v:true
Approved By w:20 v:true
Category w:20 v:false
Status w:20 v:false
Priority w:20 v:false

Number(columnsWidth[i]) を出力すると、正しい値として表示されるため、幅の割り当てで奇妙なことが起こっています。

これを数時間見ていて、それを修正するために複数のことを試みましたが、役に立ちませんでした。

4

4 に答える 4

3

私のデータグリッドの幅は、HDividedBox の片側にあるため、変更される可能性があります。

そこが問題です。

DataGrid の幅が固定されていないときはいつでも、Flex 2 と Flex 3 の DataGridColumn 幅でまったく同じ問題に直面しました。私が持っていた唯一の解決策は、DataGrid の幅を修正するか、AdvancedDataGrid または他の同様のコンポーネントに切り替えることでした。

于 2009-08-20T03:18:20.013 に答える
1

わかりました-さまざまな列幅モードのサポートを構築しているときに、私たちはこれに遭遇しました. ちょっとした情報 - 幅を明示的に設定したい場合は、次のようにしてください:

var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;
于 2011-05-23T21:11:39.360 に答える
1

あなたはこれを達成することができます.DataGrid自体のバグだと私は信じています.

DataGrid で minWidth="0" および horizo​​ntalScrollPolicy="{ScrollPolicy.AUTO}" を設定すると、固定幅の DataGridColumn オブジェクトを作成し、正しく従わせることができます。

ただし、最終的な列にはまだ問題があるようです。DataGrid がまだすべての固定幅の合計よりも大きい場合、最終的な DataGridColumn が引き伸ばされます。

ヘッダー テキストなどのない空白の列を最後に追加することで、これを回避できます。

于 2010-11-11T16:13:43.603 に答える
1

私は AdvancedDataGrid で同じことをしましたが、うまくいきました。これらの値を設定してみてください

  horizontalScrollPolicy="on"
  width="100%

次に、列を追加します。これは HDividedBox で動作するはずです。

于 2009-08-20T05:53:15.727 に答える