Working With Groups
A typical use of grouping is demonstrated by the following code:
' A RenderArea is created that is to be repeated for each group.
Dim ra As C1.C1Preview.RenderArea = New C1.C1Preview.RenderArea
ra.Style.Borders.All = New C1.C1Preview.LineDef("2mm", Color.Blue)
' MyData array of objects is used as the data source:
ra.DataBinding.DataSource = MyData.Generate(100, 0)
' Data is grouped by the GroupId field:
ra.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value")
' Create a RenderText that will serve as the group header; In a general case, the header can be complex and itself be data bound:
Dim rt As C1.C1Preview.RenderText = New C1.C1Preview.RenderText
' The group header will look like "GroupId = XXX", where XXX is the value of the GroupId field in the group:
rt.Text = "GroupId: [Fields!GroupId.Value]"
rt.Style.BackColor = Color.Yellow
' Add the header to the group area:
ra.Children.Add(rt)
' This RenderText will print records within each group:
rt = New C1.C1Preview.RenderText
' The text to print for each record:
rt.Text = "GroupId: [Fields!GroupId.Value]" & Microsoft.VisualBasic.Chr(13) & "IntValue: [Fields!IntValue.Value]"
rt.Style.Borders.Bottom = C1.C1Preview.LineDef.Default
rt.Style.BackColor = Color.FromArgb(200, 210, 220)
' Set the text's data source to the data source of the containing RenderArea - this indicates that the render object is bound to the current group in the specified object:
rt.DataBinding.DataSource = ra.DataBinding.DataSource
' Add the text to the area:
ra.Children.Add(rt)
• C#
// A RenderArea is created that is to be repeated for each group.
RenderArea ra = new RenderArea();
ra.Style.Borders.All = new LineDef("2mm", Color.Blue);
// MyData array of objects is used as the data source:
ra.DataBinding.DataSource = MyData.Generate(100, 0);
// Data is grouped by the GroupId field:
ra.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value");
// Create a RenderText that will serve as the group header; In a general case, the header can be complex and itself be data bound:
RenderText rt = new RenderText();
// The group header will look like "GroupId = XXX", where XXX is the value of the GroupId field in the group:
rt.Text = "GroupId: [Fields!GroupId.Value]";
rt.Style.BackColor = Color.Yellow;
// Add the header to the group area:
ra.Children.Add(rt);
// This RenderText will print records within each group:
rt = new RenderText();
// The text to print for each record:
rt.Text = "GroupId: [Fields!GroupId.Value]\rIntValue: [Fields!IntValue.Value]";
rt.Style.Borders.Bottom = LineDef.Default;
rt.Style.BackColor = Color.FromArgb(200, 210, 220);
// Set the text's data source to the data source of the containing RenderArea - this indicates that the render object is bound to the current group in the specified object:
rt.DataBinding.DataSource = ra.DataBinding.DataSource;
// Add the text to the area:
ra.Children.Add(rt);
|