次のコードは、典型的なグループ化の使用方法を示します。
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
' 各グループで繰り返されるレンダリング領域を作成します:
Dim ra As C1.C1Preview.RenderArea = New C1.C1Preview.RenderArea
ra.Style.Borders.All = New C1.C1Preview.LineDef("2mm", Color.Blue)
ra.DataBinding.DataSource = MyData.Generate(20, 0, True)
ra.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value")
' 各グループ内の IntValue フィールドの合計を計算する集計を作成します:
Dim agg As C1.C1Preview.DataBinding.Aggregate = New C1.C1Preview.DataBinding.Aggregate("Group_IntValue")
' 合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value"
'集計がグループ範囲を持つことを指定します:
agg.Running = C1.C1Preview.DataBinding.RunningEnum.Group
' 集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding
' 集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg)
' ドキュメント全体の IntValue フィールドの合計を計算する集計を作成します:
agg = New C1.C1Preview.DataBinding.Aggregate("Total_IntValue")
' 合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value"
' 集計がドキュメント範囲を持つことを指定します:
agg.Running = C1.C1Preview.DataBinding.RunningEnum.All
' 集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding
' 集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg)
' グループヘッダーを作成します:
Dim rt As C1.C1Preview.RenderText = New C1.C1Preview.RenderText
rt.Text = "GroupId: [Fields!GroupId.Value]"
rt.Style.BackColor = Color.Yellow
ra.Children.Add(rt)
' このレンダリングテキストは、グループレコードを出力します。コードからわかるように、グループ集計値はグループフッターだけでなく、グループヘッダーおよびグループ詳細でも参照できます:
rt = New C1.C1Preview.RenderText
rt.Text = "GroupId:
[Fields!GroupId.Value]\rIntValue:[Fields!IntValue.Value]\rGroup_IntValue:[Aggregates!Group_IntValue.Value]\rTotal_IntValue:[Aggregates!Total_IntValue.Value]\rTatalNested_IntValue:[Aggregates!TatalNested_IntValue.Value]"
rt.Style.Borders.Bottom = C1.C1Preview.LineDef.Default
rt.Style.BackColor = Color.FromArgb(200, 210, 220)
rt.DataBinding.DataSource = ra.DataBinding.DataSource
ra.Children.Add(rt)
' この集計もグループに対して計算されますが、ネストされたオブジェクトのデータ連結に接続されます。
agg = New C1.C1Preview.DataBinding.Aggregate("TotalNested_IntValue")
agg.ExpressionText = "Fields!IntValue.Value"
agg.Running = RunningEnum.All
agg.DataBinding = rt.DataBinding
doc.DataSchema.Aggregates.Add(agg)
'領域をドキュメントに追加します。
doc.Body.Children.Add(ra)
|
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
//各グループで繰り返されるレンダリング領域を作成します:
RenderArea ra = new RenderArea();
ra.Style.Borders.All = new LineDef("2mm", Color.Blue);
ra.DataBinding.DataSource = MyData.Generate(20, 0, true);
ra.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value");
//各グループ内の IntValue フィールドの合計を計算する集計を作成します:
Aggregate agg = new Aggregate("Group_IntValue");
// 合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value";
// 集計がグループ範囲を持つことを指定します:
agg.Running = RunningEnum.Group;
// 集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding;
// 集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg);
// ドキュメント全体の IntValue フィールドの合計を計算する集計を作成します:
agg = new Aggregate("Total_IntValue");
//合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value";
// 集計がドキュメント範囲を持つことを指定します:
agg.Running = RunningEnum.All;
// 集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding;
//集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg);
// グループヘッダーを作成します:
RenderText rt = new RenderText();
rt.Text = "GroupId: [Fields!GroupId.Value]";
rt.Style.BackColor = Color.Yellow;
ra.Children.Add(rt);
// このレンダリングテキストは、グループレコードを出力します。コードからわかるように、グループ集計値はグループフッターだけでなく、グループヘッダーおよびグループ詳細でも参照できます:
rt = new RenderText();
rt.Text = "GroupId:
[Fields!GroupId.Value]\rIntValue:[Fields!IntValue.Value]\rGroup_IntValue:[Aggregates!Group_IntValue.Value]\rTotal_IntValue:[Aggregates!Total_IntValue.Value]\rTatalNested_IntValue:[Aggregates!TatalNested_IntValue.Value]";
rt.Style.Borders.Bottom = LineDef.Default;
rt.Style.BackColor = Color.FromArgb(200, 210, 220);
rt.DataBinding.DataSource = ra.DataBinding.DataSource;
ra.Children.Add(rt);
// この集計もグループに対して計算されますが、ネストされたオブジェクトのデータ連結に接続されます。
agg = new Aggregate("TotalNested_IntValue");
agg.ExpressionText = "Fields!IntValue.Value";
agg.Running = RunningEnum.All;
agg.DataBinding = rt.DataBinding;
doc.DataSchema.Aggregates.Add(agg);
//領域をドキュメントに追加します。
doc.Body.Children.Add(ra);
|
|
ドキュメントの aggregate コレクション(Aggregates)内で宣言せずに、データバインドされた C1PrintDocument で使用できる集計タイプもあることに注意してください。詳細や例については、データ集計トピックを参照してください。