Print Data Grid from Code
Our sample projects and report templates can help you learn the basics of working with our products.This example is outdated, you can check out the many other new examples in this category.This example shows how to print Data Grid from code. Data Grid is the data that is presented in the form of a table. In the
Let's look at the
Next, add a Data Band and Header Band to the report:
Next, place Text Boxes with reference to data source fields on Data Band, and Text Boxes with titles of data on Header Band:
Then, add a Footer Band with Text Box to the report for show a Total value:
In the end, render the report and show it in the viewer:
Form1_Load() event create and fill a data collection:
private void Form1_Load(object sender, System.EventArgs e)
{
DataTable table = new DataTable("Demo");
table.Columns.Add();
table.Columns.Add();
DataRow row1 = table.NewRow();
DataRow row2 = table.NewRow();
DataRow row3 = table.NewRow();
row1.ItemArray = new string[2]{"1", "One"};
row2.ItemArray = new string[2]{"2", "Two"};
row3.ItemArray = new string[2]{"3", "Three"};
table.Rows.Add(row1);
table.Rows.Add(row2);
table.Rows.Add(row3);
dataView1.Table = table;
}
Let's look at the
PrintDataGrid() method in more detail in parts. First, create a new report and data source in the dictionary:
private void PrintDataGrid(DataGrid sender)
{
DataView dataView = (DataView)sender.DataSource;
StiReport report = new StiReport();
report.ScriptLanguage = StiReportLanguageType.CSharp;
// Add data to datastore
report.RegData("view", dataView);
// Fill dictionary
report.Dictionary.Synchronize();
...
Next, add a Data Band and Header Band to the report:
...
StiPage page = report.Pages.Items[0];
// Create HeaderBand
StiHeaderBand headerBand = new StiHeaderBand();
headerBand.Height = 0.5f;
headerBand.Name = "HeaderBand";
page.Components.Add(headerBand);
// Create DataBand
StiDataBand dataBand = new StiDataBand();
dataBand.DataSourceName = "view" + dataView.Table.TableName;
dataBand.Height = 0.5f;
dataBand.Name = "DataBand";
page.Components.Add(dataBand);
...
Next, place Text Boxes with reference to data source fields on Data Band, and Text Boxes with titles of data on Header Band:
...
// Create texts
Double pos = 0;
Double columnWidth = StiAlignValue.AlignToMinGrid(page.Width / dataView.Table.Columns.Count, 0.1, true);
int nameIndex = 1;
foreach (DataColumn column in dataView.Table.Columns)
{
// Create text on header
StiText headerText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
headerText.Text.Value = column.Caption;
headerText.HorAlignment = StiTextHorAlignment.Center;
headerText.Name = "HeaderText" + nameIndex.ToString();
headerText.Brush = new StiSolidBrush(Color.LightGreen);
headerText.Border.Side = StiBorderSides.All;
headerBand.Components.Add(headerText);
// Create text on Data Band
StiText dataText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
dataText.Text.Value = "{view" + dataView.Table.TableName + "." +
Stimulsoft.Report.CodeDom.StiCodeDomSerializator.ReplaceSymbols(column.ColumnName) + "}";
dataText.Name = "DataText" + nameIndex.ToString();
dataText.Border.Side = StiBorderSides.All;
// Add highlight
StiCondition condition = new StiCondition();
condition.BackColor = Color.CornflowerBlue;
condition.TextColor = Color.Black;
condition.Expression = "(Line & 1) == 1";
condition.Item = StiFilterItem.Expression;
dataText.Conditions.Add(condition);
dataBand.Components.Add(dataText);
pos += columnWidth;
nameIndex ++;
}
...
Then, add a Footer Band with Text Box to the report for show a Total value:
...
// Create FooterBand
StiFooterBand footerBand = new StiFooterBand();
footerBand.Height = 0.5f;
footerBand.Name = "FooterBand";
page.Components.Add(footerBand);
// Create text on footer
StiText footerText = new StiText(new RectangleD(0, 0, page.Width, 0.5f));
footerText.Text.Value = "Count - {Count()}";
footerText.HorAlignment = StiTextHorAlignment.Right;
footerText.Name = "FooterText";
footerText.Brush = new StiSolidBrush(Color.LightGreen);
footerBand.Components.Add(footerText);
...
In the end, render the report and show it in the viewer:
...
// Render without progress bar
report.Render(false);
report.Show();
}