ReportViewer for ASP.NET Web Forms
行と列のグループ - ヘッダーとフッター
C1PrintDocument の使い方 > テーブル > 行と列のグループ - ヘッダーとフッター

テーブルの強力な機能の1つに、要素のグループ化があります。グループ化を使用すると、テーブルの複数の要素にまとめてアクセスできます。たとえば、それが1つの要素であるかのようにグループにスタイルを設定できます。列のグループ化、行のグループ化、およびセルのグループ化がサポートされています。

行のグループにアクセスするには、RowGroups コレクション (TableVectorGroupCollection  型).を使用します。そのコレクションの要素はTableVectorGroup型で、この型にいくつかの便利なプロパティが定義されています。このプロパティの中でも注目されるプロパティは、ColumnHeaderです。このプロパティを使用すると、行のグループをテーブルヘッダーに指定して、それをページまたはページ列ごとに先頭に繰り返し表示できます。関連するプロパティはColumnFooterです。これを使用すると、行のグループをテーブルフッターに指定して、それをページまたはページ列ごとに末尾に繰り返し表示できます。

 次のコードは、テーブルの最初の2行をテーブルヘッダーに指定して、それをページ区切りまたは列区切りの後に繰り返し表示する方法を示します(rt1 は RenderTable オブジェクト)。

Visual Basic コードの書き方

Visual Basic
コードのコピー
rt1.RowGroups(0, 2).Header = C1.C1Preview.TableHeaderEnum.Page

C# コードの書き方

C#
コードのコピー
rt1.RowGroups[0, 2].Header = C1.C1Preview.TableHeaderEnum.Page;

上に示したように、TableVectorGroupCollection クラスのインデクサは2つの整数を受け取ります。最初の値は、グループに含まれる最初の行のインデックスです(上のサンプルでは0)。2番目の値は、グループ内の行数です(上のサンプルでは2)。

列のグループにアクセスするには、ColGroups コレクションを使用する必要があります。これは、行グループのコレクション(TableVectorGroupCollection)と同じ型で、同じ機能を提供します。特に注目される点は、列のグループを垂直方向のテーブルヘッダーまたはテーブルフッターに指定する機能です。C1PrintDocument は「水平方向」(または「拡張」)ページをサポートします。これを使用すると、広いオブジェクトを水平方向の複数のページにまたがって表示できます。オブジェクト(テーブルなど)を水平方向の複数のページにまたがって表示するには、SplitHorzBehavior を true に設定します。オブジェクトの幅がページ幅より広い場合は、複数の水平方向ページに分割されます。特に、この方法で広いテーブルを分割することができます。列のグループを各ページの左端に沿って繰り返し表示するには、グループの ColumnHeader プロパティを true に設定します。列のグループを各ページの右端に沿って繰り返し表示するには、グループの ColumnFooter プロパティを true に設定します

メモ:テーブルの任意の行(または列)のグループをフッターに割り当てることができますが、通常は、テーブルの最後の何行(または列)かをフッターグループに入れます。これで、フッターが通常のフッターとして動作するようになります。つまり、フッターは各ページの下部(または右端)にだけ表示され、さらにテーブルの最後にも表示されます。たとえば、テーブルの最初の行をフッターに指定すると、テーブルの先頭にも表示され、テーブルの最後には表示されなくなります。

次のコード例では、100 行 10 列のテーブルを作成し、テーブルの幅を自動に設定します。さらに、各列の幅を明示的に1インチに設定し、水平方向および垂直方向のテーブルヘッダーとテーブルフッターも割り当てます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
'テーブルを作成し、内容を挿入します
Dim rt1 As C1.C1Preview.RenderTable = New C1.C1Preview.RenderTable()
Dim row As Integer = 0
Dim col As Integer
Do While (row < 100)
    col = 0
    Do While (col < 6)
        rt1.Cells(row, col).Text = String.Format("Text in cell({0}, {1})", row, col)
        col += 1
    Loop
    row += 1
Loop
 
' テーブルと列の幅を設定します
rt1.Width = C1.C1Preview.Unit.Auto
col = 0
Do While (col < 6)
    rt1.Cols(col).Width = "1in"
    col += 1
Loop
 
' 最初の2行をヘッダーとして割り当てます。背景を設定します
rt1.RowGroups(0, 2).PageHeader = True
rt1.RowGroups(0, 2).Style.BackColor = Color.Red
 
'最後の2行をフッターとして割り当てます。背景を設定します
rt1.RowGroups(98, 2).PageFooter = True
rt1.RowGroups(98, 2).Style.BackColor = Color.Blue
 
'最初の列をヘッダーとして割り当てます
rt1.ColGroups(0, 1).PageHeader = True
rt1.ColGroups(0, 1).Style.BackColor = Color.BlueViolet
 
' 最後の列をフッターとして割り当てます
rt1.ColGroups(5, 1).PageFooter = True
rt1.ColGroups(5, 1).Style.BackColor = Color.BurlyWood

C# コードの書き方

C#
コードのコピー
// テーブルを作成し、内容を挿入します
RenderTable rt1 = new RenderTable();
for (int row = 0; row < 100; ++row)
{
    for (int col = 0; col < 6; ++col)
    {
        rt1.Cells[row, col].Text = string.Format("Text in cell({0}, {1})", row, col);
    }
}
 
// テーブルと列の幅を設定します
rt1.Width = Unit.Auto;
for (int col = 0; col < 6; ++col)
{
    rt1.Cols[col].Width = "1in";
}
 
//最初の2行をヘッダーとして割り当てます。背景を設定します
rt1.RowGroups[0, 2].PageHeader = true;
rt1.RowGroups[0, 2].Style.BackColor = Color.Red;
 
// 最後の2行をフッターとして割り当てます。背景を設定します
rt1.RowGroups[98, 2].PageFooter = true;
rt1.RowGroups[98, 2]. Style.BackColor = Color.Blue;
 
//最初の列をヘッダーとして割り当てます
rt1.ColGroups[0, 1].PageHeader = true;
rt1.ColGroups[0, 1].Style.BackColor = Color.BlueViolet;
 
// 最後の列をフッターとして割り当てます
rt1.ColGroups[5, 1].PageFooter = true;
rt1.ColGroups[5, 1].Style.BackColor = Color.BurlyWood;

このサンプルでは、背景色を使って行グループと列グループを強調表示しています。