325 
Dim doc As New C1PrintDocument() 
doc.ScriptingOptions.Language = ScriptLanguageEnum.CSharp 
Dim rt As New RenderText("[PageNo == 1 ? ""First"" : ""Not first""]") 
doc.Body.Children.Add(rt) 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.ScriptingOptions.Language = ScriptLanguageEnum.CSharp; 
RenderText rt = new RenderText("[PageNo == 1 ? \"First\" : \"Not 
first\"]"); 
doc.Body.Children.Add(rt); 
Assemblies and Namespaces 
By default, the following assemblies are available (referenced) for scripts: 
System 
System.Drawing 
To add another (system or custom) assembly to the list of assemblies referenced in scripts, add it to the 
C1PrintDocument.ScriptingOptions.ExternalAssemblies collection on the document. For instance, the 
following will add a reference to the System.Data assembly to the document's scripts: 
Visual Basic 
Dim doc As New C1PrintDocument() 
doc.ScriptingOptions.ExternalAssemblies.Add("System.Data.dll") 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.ScriptingOptions.ExternalAssemblies.Add("System.Data.dll"); 
The following namespaces are by default available (imported) for use in scripts: 
System 
System.Collections 
System.Collections.Generic 
System.Text 
Microsoft.VisualBasic 
System.Drawing 
To add another namespace, add it to the C1PrintDocument.ScriptingOptions.Namespaces collection on the 
document. For instance, this will allow the use of types declared in System.Data namespace in the document's 
scripts without fully qualifying them with the namespace: 
Visual Basic 
Dim doc As New C1PrintDocument() 
doc.ScriptingOptions. Namespaces.Add("System.Data") 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.ScriptingOptions. Namespaces.Add("System.Data"); 
IDs Accessible in Text Expressions 
As mentioned above, expressions in brackets can be used within the Text property of RenderText and 
ParagraphText objects.  In those expressions, the following object IDs are available: 
Document (type C1PrintDocument) 
Pdf rearrange pages - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
reorder pages in pdf preview; how to move pages in pdf acrobat
Pdf rearrange pages - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
pdf reverse page order online; change page order pdf preview
326  
This variable references the document being generated. This can be used in a number of ways, for instance 
the following code will print the author of the current document: 
Visual Basic 
Dim doc As New C1PrintDocument() 
Dim rt As New RenderText("Author:[Document.DocumentInfo.Author]") 
doc.Body.Children.Add(rt) 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
RenderText rt = 
new RenderText("Author: [Document.DocumentInfo.Author]"); 
doc.Body.Children.Add(rt); 
RenderObject (type RenderObject) 
This variable references the current render object.  For instance, the following code will print the name of 
the current render object: 
Visual Basic 
Dim doc As New C1PrintDocument() 
Dim rt As New RenderText( _ 
"The object's name is [RenderObject.Name]") 
rt.Name = "MyRenderText" 
doc.Body.Children.Add(rt) 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
RenderText rt = new RenderText( 
"The object's name is [RenderObject.Name]"); 
rt.Name = "MyRenderText"; 
doc.Body.Children.Add(rt); 
Page (type C1Page) 
This variable references the current page (object of type C1Page). While the most commonly used in 
scripts members of the page object are accessible directly (see PageNo, PageCount and so on below), there 
is other data that can be accessed via the Page variable, such as the current page settings. For instance, the 
following code will print "Landscape is TRUE" if the current page layout has landscape orientation, and 
"Landscape is FALSE" otherwise: 
Visual Basic 
Dim doc As New C1PrintDocument() 
Dim rt As New RenderText("Landscape is " + _ 
"[Iif(Page.PageSettings.Landscape,\"TRUE\",\"FALSE\")].") 
doc.Body.Children.Add(rt) 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
RenderText rt = new RenderText("Landscape is " + 
"[Iif(Page.PageSettings.Landscape,\"TRUE\",\"FALSE\")]."); 
doc.Body.Children.Add(rt); 
PageNo (type Integer) 
This name resolves to the current 1-based page number. Equivalent to Page.PageNo. 
PageCount (type Integer) 
This name resolves to the total page count for the document. Equivalent to Page.PageCount. For 
instance, the following code can be used to generate the common "Page X of Y" page header: 
Visual Basic 
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
C# TIFF - Sort TIFF File Pages Order in C#.NET. Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview.
how to reverse page order in pdf; rearrange pages in pdf file
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
you want to change or rearrange current TIFF &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
change pdf page order online; how to rearrange pdf pages online
327 
Dim doc As New C1PrintDocument() 
doc.PageLayout.PageHeader = New RenderText( _ 
"Page [PageNo] of [PageCount]") 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.PageLayout.PageHeader = new RenderText( 
"Page [PageNo] of [PageCount]"); 
PageX (type Integer) 
This name resolves to the current 1-based horizontal page number. (For documents without horizontal 
page breaks, will return 1.) 
PageY (type Integer) 
This name resolves to the current 1-based vertical page number. (For documents without horizontal page 
breaks, will be equivalent to PageNo.) 
PageXCount (type Integer) 
This name resolves to the total page count for the document. (For documents without horizontal page 
breaks, will return 1.) 
PageYCount (type Integer) 
This name resolves to the total page count for the document. (For documents without horizontal page 
breaks, will be equivalent to PageCount.) 
It is important to note that any of page numbering-related variables described here can be used anywhere 
in a document – not necessarily in page headers or footers. 
Fields (type FieldCollection) 
This variable references the collection of available database fields, and has the type 
C1.C1Preview.DataBinding.FieldCollection. It can only be used in data-bound documents. For 
instance, the following code will print the list of product names contained in the Products table of the 
NWIND database: 
Visual Basic 
Dim doc As New C1PrintDocument() 
Dim dSrc As New DataSource() 
dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB 
dSrc.ConnectionProperties.ConnectString = _ 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB" 
Dim dSet1 As New C1.C1Preview.DataBinding.DataSet( _ 
dSrc, "select * from Products") 
doc.DataSchema.DataSources.Add(dSrc) 
doc.DataSchema.DataSets.Add(dSet1) 
Dim rt As New RenderText() 
rt.DataBinding.DataSource = dSet1 
rt.Text = "[Fields!ProductName.Value]" 
doc.Body.Children.Add(rt) 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
DataSource dSrc = new DataSource(); 
dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB; 
dSrc.ConnectionProperties.ConnectString = 
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB"; 
C1.C1Preview.DataBinding.DataSet dSet1 = 
new C1.C1Preview.DataBinding.DataSet(dSrc, 
"select * from Products"); 
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
page directly. Moreover, when you get a PDF document which is out of order, you need to rearrange the PDF document pages. In these
move pages in pdf online; pdf reverse page order
Online Merge PDF files. Best free online merge PDF tool.
the button below and download your PDF. The perfect conversion tool. By dragging your pages in the editor area you can rearrange them or delete single pages.
reorder pages of pdf; how to move pages in pdf reader
328  
doc.DataSchema.DataSources.Add(dSrc); 
doc.DataSchema.DataSets.Add(dSet1); 
RenderText rt = new RenderText(); 
doc.Body.Children.Add(rt); 
rt.DataBinding.DataSource = dSet1; 
rt.Text = "[Fields!ProductName.Value]"; 
Note the use of "!" to access an element of the fields array in the last line. Alternatively, you can write: 
Visual Basic 
rt.Text = "[Fields(\"ProductName\").Value]" 
C# 
rt.Text = "[Fields(\"ProductName\").Value]"; 
but the notation using "!" is shorter and easier to read. 
Aggregates (type AggregateCollection) 
This variable allows access to the collection of aggregates defined on the document.  That collection is of 
the type C1.C1Preview.DataBinding.AggregateCollection, its elements have the type 
C1.C1Preview.DataBinding.Aggregate. For instance, the following code will print the average unit price 
after the list of products: 
Visual Basic 
Dim doc As New C1PrintDocument() 
Dim dSrc As New DataSource() 
dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB 
dSrc.ConnectionProperties.ConnectString = _ 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB" 
C1.C1Preview.DataBinding.DataSet dSet1 = _ 
new C1.C1Preview.DataBinding.DataSet(dSrc, _ 
"select * from Products") 
doc.DataSchema.DataSources.Add(dSrc) 
doc.DataSchema.DataSets.Add(dSet1) 
Dim rt As New RenderText() 
doc.Body.Children.Add(rt) 
rt.DataBinding.DataSource = dSet1 
rt.Text = "[Fields!ProductName.Value]" 
doc.DataSchema.Aggregates.Add(new Aggregate( _ 
"AveragePrice", "Fields!UnitPrice.Value", _ 
rt.DataBinding, RunningEnum.Document, _ 
AggregateFuncEnum.Average)) 
doc.Body.Children.Add(new RenderText( _ 
"Average price: [Aggregates!AveragePrice.Value]")) 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
DataSource dSrc = new DataSource(); 
dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB; 
dSrc.ConnectionProperties.ConnectString = 
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB"; 
C1.C1Preview.DataBinding.DataSet dSet1 = 
new C1.C1Preview.DataBinding.DataSet(dSrc,  "select * from 
Products"); 
doc.DataSchema.DataSources.Add(dSrc); 
doc.DataSchema.DataSets.Add(dSet1); 
RenderText rt = new RenderText(); 
doc.Body.Children.Add(rt); 
rt.DataBinding.DataSource = dSet1; 
C# PowerPoint - How to Process PowerPoint
pages simply with a few lines of C# code. C# Codes to Sort Slides Order. If you want to use a very easy PPT slide dealing solution to sort and rearrange
reorder pages in a pdf; move pdf pages online
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
well programmed Word pages sorter to rearrange Word pages in extracting single or multiple Word pages at one & profession imaging controls, PDF document, image
reverse page order pdf; change page order pdf reader
329 
rt.Text = "[Fields!ProductName.Value]"; 
doc.DataSchema.Aggregates.Add(new Aggregate( 
"AveragePrice", "Fields!UnitPrice.Value", 
rt.DataBinding, RunningEnum.Document, 
AggregateFuncEnum.Average)); 
doc.Body.Children.Add(new RenderText( 
"Average price: [Aggregates!AveragePrice.Value]")); 
DataBinding (type C1DataBinding) 
This variable allows accessing the DataBinding property of the current render object, of the type 
C1.C1Preview.DataBinding.C1DataBinding. For instance, the following code (modified from the 
sample showing the use of Fields variable) will produce a numbered list of products using the 
RowNumber member of the render object's DataBinding property in the text expression: 
Visual Basic 
Dim doc As New C1PrintDocument() 
Dim dSrc As New DataSource() 
dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB 
dSrc.ConnectionProperties.ConnectString = _ 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB" 
C1.C1Preview.DataBinding.DataSet dSet1 = _ 
new C1.C1Preview.DataBinding.DataSet(dSrc, _ 
"select * from Products") 
doc.DataSchema.DataSources.Add(dSrc) 
doc.DataSchema.DataSets.Add(dSet1) 
Dim rt As New RenderText() 
rt.DataBinding.DataSource = dSet1 
rt.Text = "[DataBinding.RowNumber]: [Fields!ProductName.Value]" 
doc.Body.Children.Add(rt) 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
DataSource dSrc = new DataSource(); 
dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB; 
dSrc.ConnectionProperties.ConnectString = 
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB"; 
C1.C1Preview.DataBinding.DataSet dSet1 = 
new C1.C1Preview.DataBinding.DataSet(dSrc, 
"select * from Products"); 
doc.DataSchema.DataSources.Add(dSrc); 
doc.DataSchema.DataSets.Add(dSet1); 
RenderText rt = new RenderText(); 
rt.DataBinding.DataSource = dSet1; 
rt.Text = "[DataBinding.RowNumber]: [Fields!ProductName.Value]"; 
doc.Body.Children.Add(rt); 
IDs accessible in expressions within Filter, Grouping and Sorting 
In filter, grouping and sorting expressions, the following subset of IDs are accessible: 
Document (type C1PrintDocument) 
DataBinding (type C1DataBinding) 
Fields (FieldCollection) 
For details on those object types, see IDs Accessible in Text Expressions. 
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
page will teach you to rearrange and readjust amount of robust PPT slides/pages editing methods and powerful & profession imaging controls, PDF document, image
how to reorder pdf pages in; how to move pdf pages around
Process Images in Web Image Viewer | Online Tutorials
used document types are supported, including PDF, multi-page easy to process image and file pages with the deleting a thumbnail, and you can rearrange the file
how to reorder pages in pdf preview; change page order pdf acrobat
330  
IDs accessible in expressions used to specify calculated fields in a DataSet 
In expressions used to specify calculated fields in data sets, the following subset of IDs are accessible: 
Document (type C1PrintDocument) 
Fields (FieldCollection) 
For details on those object types, see IDs Accessible in Text Expressions. 
Data Binding 
In addition to creating a C1PrintDocument fully (including data) in code, a C1PrintDocument may be data bound. 
In that case, the actual document is produced when the document is filled with data from the database during 
generation. 
The main property facilitating data binding is the DataBinding property on RenderObject , of the type 
C1DataBinding, which allows to specify the data source for data shown by the render object. Additionally, the 
data binding can indicate that the render object must be repeated for all records in the data source, in which case 
the render object becomes similar to a "band" from a banded report generator. This is similar to the RDL definition 
from Microsoft. 
Thus for data bound documents, document generation involves two stages: 
All data bound render objects are selected, and used (as templates) to create the "real" render objects based 
on data. 
The resulting document is paginated as a non-data bound document. 
The document can contain the database schema (represented by the class C1DataSchema, and including the data 
base connection info, SQL queries, and so on) inside. The C1DataBinding objects within the document can 
reference properties of that schema. If all data bound objects in a document reference only the properties of the 
C1DataSchema of the document itself, the document becomes "data reflowable" – that is, the document can be 
regenerated independently of the program used to create it, with data completely updated from the database. 
Also, the C1DataBinding may reference existing data sources (DataTable and so on) which were created on the 
form or elsewhere in the program that created that C1PrintDocument. In this case, of course, the document can 
only be regenerated with updating the data only in the context of that program, and saving and later loading that 
document (as a C1D or C1DX file) will break any connection with the data. 
Data Binding in Render Objects 
When a render object is created, the data binding for it is not created initially. It is created when the DataBinding 
property is referenced in user code. For example: 
Visual Basic 
Dim rt As RenderText = New RenderText 
' ... 
If Not (rt.DataBinding Is Nothing) Then  
MessageBox.Show("Data binding defined.")  
End If 
C# 
RenderText rt = new RenderText(); 
// ... 
if (rt.DataBinding != null) 
MessageBox.Show("Data binding defined."); 
The condition in the previous code will always evaluate to True. Thus if you only want to check whether data 
binding exists on a particular render object, you should use the DataBindingDefined property instead: 
331 
Visual Basic 
Dim rt As RenderText = New RenderText  
' ... 
If rt.DataBindingDefined Then  
MessageBox.Show("Data binding defined.")  
End If 
C# 
RenderText rt = new RenderText(); 
// ... 
if  (rt.DataBindingDefined) 
MessageBox.Show("Data binding defined."); 
Note: This is similar to the Handle and IsHandleCreated properties of the WinForms Control class. 
During document generation the RenderObjectsList collection is formed. Three different situations are possible as 
a result: 
The Copies property on the render object is null. This means that the object is not data bound, and is 
processed as usual. The Fragments property of the object can be used to access the actual rendered 
fragments of the object on the generated pages. 
The Copies property on the render object is not null, but Copies.Count is 0. This means that the object is 
data bound, but the data set is empty (contains no records). In such situations the object is not show in the 
document at all, that is, no fragments are generated for the object. For an example see Binding to the 
Empty List in the DataBinding sample. 
The Copies property on the render object is not null and Copies.Count is greater than 0. This means that 
the object is data bound, and the data source is not empty (contains records). During the document 
generation, several copies of the render object will be created and placed in this collection. Those copies 
will then be processed and fragments will be generated for each copy as usual. 
Data bound tables 
Using the DataBinding property in the TableVectorGroup, which is the base class for table row and column 
groups, a RenderTable can be data bound.  
Sample Project Available 
For examples of binding to a RenderTable, see the DataBinding sample located on the ComponentOne HelpCentral 
Sample page. 
Note that not only groups of rows, but also groups of columns can data bound. That is, a table can grow not only 
down, but also sideways. 
Grouping will work, but note that group hierarchy is based on the hierarchy of TableVectorGroup objects, as 
shown in the following code: 
Visual Basic 
Dim rt As C1.C1Preview.RenderTable = New C1.C1Preview.RenderTable  
rt.Style.GridLines.All = C1.C1Preview.LineDef.Default 
' Table header: 
Dim c As C1.C1Preview.TableCell = rt.Cells(0, 0)  
c.SpanCols = 3  
c.Text = "Header"  
332  
' Group 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  
' Sub-group header: 
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  
' Sub-group data: 
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]"  
' Create a group of data bound lines, grouped by the GroupId field: 
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  
' Create a nested group, grouped by 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# 
RenderTable rt = new RenderTable(); 
rt.Style.GridLines.All = LineDef.Default; 
// Table header: 
TableCell c = rt.Cells[0, 0]; 
c.SpanCols = 3; 
c.Text = "Header"; 
// Group 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; 
// Sub-group header: 
c = rt.Cells[2, 0]; 
333 
c.Text = "GroupId = [Fields!GroupId.Value] SubGroupId = 
[Fields!SubGroupId.Value]"; 
c.SpanCols = 3; 
c.Style.TextAlignHorz = AlignHorzEnum.Center; 
c.Style.TextAlignVert = AlignVertEnum.Center; 
// Sub-group data: 
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]"; 
// Create a group of data bound lines, grouped by the GroupId field: 
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; 
// Create a nested group, grouped by 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; 
// Create yet deeper nested data bound group: 
TableVectorGroup ng2 = rt.RowGroups[3, 1]; 
ng2.DataBinding.DataSource = g.DataBinding.DataSource; 
ng2.Style.BackColor = Color.LightSteelBlue; 
The above code can be illustrated by the following table: 
Header 
roup  1, 3
GroupId = [Fields!GroupId.Value] 
roup 2, 2
GroupId = [Fields!GroupId.Value]  SubGroupId = [Fields!SubGroupId.Value] 
roup 3, 1
GroupId=[Fi
elds!GroupId
.Value] 
SubGroupId=[Fields!SubGroupId.Val
ue] 
IntValue=[Fields!IntValue.Valu
e] 
Data Binding Examples 
The DataBinding sample, available on HelpCentral, contains several examples of data bound documents. Some of 
the issues from that sample are discussed in the following topics. 
Working With Groups 
A typical use of grouping is demonstrated by the following code: 
Visual Basic 
' A RenderArea is created that is to be repeated for each group. 
Dim ra As C1.C1Preview.RenderArea = New C1.C1Preview.RenderArea  
334  
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; 
Documents you may be interested
Documents you may be interested