作成日: 2023/01/25 最終更新日: 2023/01/25
文書種別
使用方法
詳細
C1FlexGridRowDetailクラスと2つのデータテーブル("Parent"、"Child")を使って、マスター/詳細形式の階層ビューを設定する簡単な方法を紹介します。
主なステップは次の通りです。
1. マスター/詳細用の各データテーブルを作成し、データセットに追加します。
2. 2つのデータ間の関連(マッピング)を定義します。
3. C1FlexGridのDataSourceプロパティにデータセットを設定します。
4. C1FlexGridのRowDetailProviderプロパティに、C1FlexGridRowDetailクラスのインスタンスを割り当てます。
※プロジェクトにC1.Win.C1FlexGrid.RowDetails.xxx.dllへの参照を追加しておく必要があります。

◎サンプルコード(VB)
主なステップは次の通りです。
1. マスター/詳細用の各データテーブルを作成し、データセットに追加します。
2. 2つのデータ間の関連(マッピング)を定義します。
3. C1FlexGridのDataSourceプロパティにデータセットを設定します。
4. C1FlexGridのRowDetailProviderプロパティに、C1FlexGridRowDetailクラスのインスタンスを割り当てます。
※プロジェクトにC1.Win.C1FlexGrid.RowDetails.xxx.dllへの参照を追加しておく必要があります。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの作成
Dim ds As New DataSet()
Dim parent As DataTable = New DataTable("Parent")
ds.Tables.Add(parent)
parent.DefaultView.AllowNew = False
parent.Columns.AddRange({New DataColumn("PA"), New DataColumn("PB")})
For i = 0 To 4
parent.Rows.Add($"A{i}", $"PB{i}")
Next
Dim child As DataTable = New DataTable("Child")
ds.Tables.Add(child)
child.DefaultView.AllowNew = False
child.Columns.AddRange({New DataColumn("CA"), New DataColumn("CB")})
For i = 0 To 4
child.Rows.Add($"A{i Mod 3}", $"CB{i}")
Next
' マッピングの設定
ds.Relations.Add("PCRelation", parent.Columns("PA"), child.Columns("CA"))
' グリッドの行詳細の設定
C1FlexGrid1.DataSource = ds
C1FlexGrid1.DataMember = "Parent"
C1FlexGrid1.RowDetailProvider = Function(g, r) New C1FlexGridRowDetail()
C1FlexGrid1.AreRowDetailsFrozen = False '行詳細の水平方向スクロールを許可
C1FlexGrid1.Cols(2).Width = 200
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// データの作成
DataSet ds = new DataSet();
DataTable parent = new DataTable("Parent");
ds.Tables.Add(parent);
parent.DefaultView.AllowNew = false;
parent.Columns.Add("PA", typeof(string));
parent.Columns.Add("PB", typeof(string));
for (var i = 0; i <= 4; i++)
{
parent.Rows.Add($"A{i}", $"PB{i}");
}
DataTable child = new DataTable("Child");
ds.Tables.Add(child);
child.Columns.Add("CA", typeof(string));
child.Columns.Add("CB", typeof(string));
for (var i = 0; i <= 4; i++)
{
child.Rows.Add($"A{i % 3}", $"CB{i}");
}
// マッピングの設定
ds.Relations.Add("PCRelation", parent.Columns["PA"], child.Columns["CA"]);
// グリッドの行詳細の設定
c1FlexGrid1.DataSource = ds;
c1FlexGrid1.DataMember = "Parent";
c1FlexGrid1.RowDetailProvider = (g, r) => new C1FlexGridRowDetail();
c1FlexGrid1.AreRowDetailsFrozen = false; // 行詳細の水平方向スクロールを許可
c1FlexGrid1.Cols[2].Width = 200;
}
}
}