作成日: 2023/03/07 最終更新日: 2023/03/07
文書種別
使用方法
詳細
ツリー表示を行っている場合、列ヘッダのクリックによってノードをソートすることはできません。
ツリーグリッドのソートを行わせるには、親ノードを選択したのち、NodeクラスのSortメソッドを使用して子ノードを手動でソートする必要があります。

以下に、ボタンクリックによって昇順(Button1)、または降順(Button2)でソートするための簡単な設定コードを記載します。
※Button1、Button2のClickイベントとして、いずれも"buttonSort_Click"を指定してください。
◎サンプルコード(VB)
ツリーグリッドのソートを行わせるには、親ノードを選択したのち、NodeクラスのSortメソッドを使用して子ノードを手動でソートする必要があります。
以下に、ボタンクリックによって昇順(Button1)、または降順(Button2)でソートするための簡単な設定コードを記載します。
※Button1、Button2のClickイベントとして、いずれも"buttonSort_Click"を指定してください。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' FlexGridの設定
C1FlexGrid1.Cols.Fixed = 0
C1FlexGrid1.Rows.Count = 20
' ツリーの設定
C1FlexGrid1.Tree.Column = 0
C1FlexGrid1.Tree.Style = TreeStyleFlags.SimpleLeaf
' ノードの追加
C1FlexGrid1(1, 0) = "A01"
C1FlexGrid1(2, 0) = "BB01"
C1FlexGrid1(3, 0) = "CCC01"
C1FlexGrid1(4, 0) = "CCC02"
C1FlexGrid1(5, 0) = "CCC03"
C1FlexGrid1(6, 0) = "BB02"
C1FlexGrid1(7, 0) = "CCC04"
C1FlexGrid1(8, 0) = "CCC05"
C1FlexGrid1(9, 0) = "CCC06"
C1FlexGrid1(10, 0) = "A02"
C1FlexGrid1(11, 0) = "BB03"
C1FlexGrid1(12, 0) = "CCC07"
C1FlexGrid1(13, 0) = "CCC08"
C1FlexGrid1(14, 0) = "CCC09"
C1FlexGrid1(15, 0) = "BB04"
C1FlexGrid1(16, 0) = "CCC10"
C1FlexGrid1(17, 0) = "CCC11"
C1FlexGrid1(18, 0) = "CCC12"
For i As Integer = 0 To C1FlexGrid1.Rows.Count - 1
C1FlexGrid1.Rows(i).IsNode = True
C1FlexGrid1.Rows(i).Node.Level = 2
Next
C1FlexGrid1.Rows(1).Node.Level = 0
C1FlexGrid1.Rows(10).Node.Level = 0
C1FlexGrid1.Rows(2).Node.Level = 1
C1FlexGrid1.Rows(6).Node.Level = 1
C1FlexGrid1.Rows(11).Node.Level = 1
C1FlexGrid1.Rows(15).Node.Level = 1
C1FlexGrid1.AutoSizeCol(0)
End Sub
Private Sub buttonSort_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click, Button1.Click
' カレント行のノードを取得
Dim node As Node = C1FlexGrid1.Rows(C1FlexGrid1.Row).Node
' 選択されたノードにソート処理を適用
If sender Is Button1 Then
node.Sort(SortFlags.Ascending)
Else
node.Sort(SortFlags.Descending)
End If
C1FlexGrid1.Focus()
End Sub
End Class
◎サンプルコード(C#)
using System.Windows.Forms;
using C1.Win.C1FlexGrid;
namespace FlexGrid_TreeSort
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// FlexGridの設定
c1FlexGrid1.Cols.Fixed = 0;
c1FlexGrid1.Rows.Count = 20;
// ツリーの設定
c1FlexGrid1.Tree.Column = 0;
c1FlexGrid1.Tree.Style = TreeStyleFlags.SimpleLeaf;
// ノードの追加
c1FlexGrid1[1, 0] = "A01";
c1FlexGrid1[2, 0] = "BB01";
c1FlexGrid1[3, 0] = "CCC01";
c1FlexGrid1[4, 0] = "CCC02";
c1FlexGrid1[5, 0] = "CCC03";
c1FlexGrid1[6, 0] = "BB02";
c1FlexGrid1[7, 0] = "CCC04";
c1FlexGrid1[8, 0] = "CCC05";
c1FlexGrid1[9, 0] = "CCC06";
c1FlexGrid1[10, 0] = "A02";
c1FlexGrid1[11, 0] = "BB03";
c1FlexGrid1[12, 0] = "CCC07";
c1FlexGrid1[13, 0] = "CCC08";
c1FlexGrid1[14, 0] = "CCC09";
c1FlexGrid1[15, 0] = "BB04";
c1FlexGrid1[16, 0] = "CCC10";
c1FlexGrid1[17, 0] = "CCC11";
c1FlexGrid1[18, 0] = "CCC12";
for (int i = 0; i < c1FlexGrid1.Rows.Count; i++)
{
c1FlexGrid1.Rows[i].IsNode = true;
c1FlexGrid1.Rows[i].Node.Level = 2;
}
c1FlexGrid1.Rows[1].Node.Level = 0;
c1FlexGrid1.Rows[10].Node.Level = 0;
c1FlexGrid1.Rows[2].Node.Level = 1;
c1FlexGrid1.Rows[6].Node.Level = 1;
c1FlexGrid1.Rows[11].Node.Level = 1;
c1FlexGrid1.Rows[15].Node.Level = 1;
c1FlexGrid1.AutoSizeCol(0);
}
private void buttonSort_Click(object sender, EventArgs e)
{
// カレント行のノードを取得
Node node = c1FlexGrid1.Rows[c1FlexGrid1.Row].Node;
// 選択されたノードにソート処理を適用
if (sender == button1)
{
node.Sort(SortFlags.Ascending);
}
else
{
node.Sort(SortFlags.Descending);
}
c1FlexGrid1.Focus();
}
}
}