次のコードは、典型的なグループ化の使用方法を示します。
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 で使用できる集計タイプもあることに注意してください。詳細や例については、データ集計トピックを参照してください。