Reports for WinForms
RenderTable によるデータ連結の使用
C1PrintDocument の使い方 > データ連結 > レンダリングオブジェクトのデータ連結 > RenderTable によるデータ連結の使用

テーブル行/列グループの基本クラスである TableVectorGroupDataBinding プロパティを使用して、RenderTable をデータ連結にできます。この例については、DataBinding サンプルを参照してください。

使用可能なサンプルプロジェクトRenderTableへのバインディングの例については、DataBinding のサンプルを参照してください。

行のグループだけでなく、列のグループもデータ連結できることに注目してください。つまり、テーブルを下方向だけでなく、横方向にも拡大できます。

次のコードに示すように、グループ化は機能しますが、グループ階層は TableVectorGroup オブジェクトの階層に基づいていません。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim rt As C1.C1Preview.RenderTable = New C1.C1Preview.RenderTable
rt.Style.GridLines.All = C1.C1Preview.LineDef.Default
 
' テーブルヘッダー:
Dim c As C1.C1Preview.TableCell = rt.Cells(0, 0)
c.SpanCols = 3
c.Text = "Header"
 
' グループヘッダー:
c = rt.Cells(1, 0)
c.Text = "GroupId = [Fields!GroupId.Value]"
c.SpanCols = 3
c.Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Center
c.Style.TextAlignVert = C1.C1Preview.AlignVertEnum.Center
 
' サブグループヘッダー:
c = rt.Cells(2, 0)
c.Text = "GroupId = [Fields!GroupId.Value] SubGroupId = [Fields!SubGroupId.Value]"
c.SpanCols = 3
c.Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Center
c.Style.TextAlignVert = C1.C1Preview.AlignVertEnum.Center
 
'  サブグループデータ:
rt.Cells(3, 0).Text = "GroupId=[Fields!GroupId.Value]"
rt.Cells(3, 1).Text = "SubGroupId=[Fields!SubGroupId.Value]"
rt.Cells(3, 2).Text = "IntValue=[Fields!IntValue.Value]"
 
'GroupId フィールドによってグループ化されたデータ連結線のグループを作成します:
Dim g As C1.C1Preview.TableVectorGroup = rt.RowGroups(1, 3)
g.CanSplit = True
g.DataBinding.DataSource = MyData.Generate(20, 0)
g.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value")
g.Style.BackColor = Color.LightCyan
 
'SubGroupId によってグループ化されたネストされたグループを作成します:
Dim ng As C1.C1Preview.TableVectorGroup = rt.RowGroups(2, 2)
ng.CanSplit = True
ng.DataBinding.DataSource = g.DataBinding.DataSource
ng.DataBinding.Grouping.Expressions.Add("Fields!SubGroupId.Value")
ng.Style.BackColor = Color.LightPink
 
' Create yet deeper nested data bound group:
Dim ng2 As C1.C1Preview.TableVectorGroup = rt.RowGroups(3, 1)
ng2.DataBinding.DataSource = g.DataBinding.DataSource
ng2.Style.BackColor = Color.LightSteelBlue

C# コードの書き方

C#
コードのコピー
RenderTable rt = new RenderTable();
rt.Style.GridLines.All = LineDef.Default;
 
// テーブルヘッダー:
TableCell c = rt.Cells[0, 0];
c.SpanCols = 3;
c.Text = "Header";
 
//グループヘッダー:
c = rt.Cells[1, 0];
c.Text = "GroupId = [Fields!GroupId.Value]";
c.SpanCols = 3;
c.Style.TextAlignHorz = AlignHorzEnum.Center;
c.Style.TextAlignVert = AlignVertEnum.Center;
 
// サブグループヘッダー:
c = rt.Cells[2, 0];
c.Text = "GroupId = [Fields!GroupId.Value] SubGroupId = [Fields!SubGroupId.Value]";
c.SpanCols = 3;
c.Style.TextAlignHorz = AlignHorzEnum.Center;
c.Style.TextAlignVert = AlignVertEnum.Center;
 
//  サブグループデータ:
rt.Cells[3, 0].Text = "GroupId=[Fields!GroupId.Value]";
rt.Cells[3, 1].Text = "SubGroupId=[Fields!SubGroupId.Value]";
rt.Cells[3, 2].Text = "IntValue=[Fields!IntValue.Value]";
 
// GroupId フィールドによってグループ化されたデータ連結線のグループを作成します:
TableVectorGroup g = rt.RowGroups[1, 3];
g.CanSplit = true;
g.DataBinding.DataSource = MyData.Generate(20, 0);
g.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value");
g.Style.BackColor = Color.LightCyan;
 
// SubGroupId によってグループ化されたネストされたグループを作成します:
TableVectorGroup ng = rt.RowGroups[2, 2];
ng.CanSplit = true;
ng.DataBinding.DataSource = g.DataBinding.DataSource;
ng.DataBinding.Grouping.Expressions.Add("Fields!SubGroupId.Value");
ng.Style.BackColor = Color.LightPink;
 
// さらに深くネストされたデータ連結グループを作成します:
TableVectorGroup ng2 = rt.RowGroups[3, 1];
ng2.DataBinding.DataSource = g.DataBinding.DataSource;
ng2.Style.BackColor = Color.LightSteelBlue;

上記のコードを図示すると、次の表のようになります。