ノードの部分展開
アウトラインツリー表示を設定した場合、デフォルトではプログラム実行時はすべてのツリーが展開した状態で表示されます。
これを指定した階層レベル以下を折りたたみ、それより上位のレベルを展開するように設定することも可能です。これは、GridTreeクラスのShowメソッドを使用します。メソッドの引数には表示するレベルを数値で指定し、これより下位のLevelのノードは折りたたまれ、上位のレベルのノードは展開されます。
次のコードは、最初のツリーレベルだけを展開し、2番目以下のレベルは折りたたむように指定しています。
C1FlexGrid1.Tree.Show(1)
c1FlexGrid1.Tree.Show(1);
列幅の自動調整
デフォルトでは、列幅はグリッドのデザイン時のサイズのままになっていますから、データのサイズに関係なく表示されてしまいます。これだとデータの表示が途中で途切れたり、スクロールしないと表示されない状態になってしまいます。データを見るたびに、ユーザーが列幅を調整したりスクロールしたりと面倒です。
小計やツリーの展開・縮小などを行った際に、列幅をセル内容に合わせて自動調節するように設定しておくと、表が見やすくなります。
この処理を行うには、1つはC1FlexGridコントロールのAutoResizeプロパティをTrueにセットします。これで、列幅の自動調節が可能になります。
C1FlexGrid1.AutoResize = True
c1FlexGrid1.AutoResize = true;
データベースからデータを読み込む前にこのプロパティをTrueにしておくと、グリッドの列幅は読み込んだデータに合わせて調節されます。
ただし、これはデータを読み込んだ時にだけ実行されますので、小計やアウトラインツリーを展開・縮小した時にも列幅の自動調節を行うには、AutoSizeColsメソッドを実行します。このメソッドを実行するとその時点ですべての列幅を自動調節してくれます。
C1FlexGrid1.AutoSizeCols()
c1FlexGrid1.AutoSizeCols();
アウトラインツリーを展開・縮小すると、C1FlexGridコントロールにはAfterCollapseイベントが発生しますので、このイベントハンドラを使うとツリーの展開・縮小のタイミングに合わせて、列幅を自動調節することができます。
Private Sub C1FlexGrid1_AfterCollapse(sender As System.Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.AfterCollapse 'ツリーの展開・縮小のたびに列幅の自動調整を行う C1FlexGrid1.AutoSizeCols() End Sub
private void c1FlexGrid1_AfterCollapse(object sender, RowColEventArgs e) { //ツリーの展開・縮小のたびに列幅の自動調整を行う c1FlexGrid1.AutoSizeCols(); }