Now the Code.
The Code involves creating a ADO.NET DataSet object
A Report Object and setting the DataSource for this report as the above created DataSet object.
To create the ADO.NET Dataset
//Create the DataTable Object
DataTable ReportDataTable = new DataTable();
ReportDataTable.TableName = "ReportDataTable";
//Add Columns to this table
ReportDataTable.Columns.Add("DataColumn1");
ReportDataTable.Columns.Add("DataColumn2");
ReportDataTable.Columns.Add("DataColumn3");
//Create a DataSet object
DataSet ReportDataSet = new DataSet();
//Add this table to the DataSet object
ReportDataSet.Tables.Add(ReportDataTable);
Please note that in the above code the DataTable is given the same name as the name given for the DataTable we created in the first set i.e
To Add Rows to this DataTable
//Add a new DataRow object
DataRow newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 1;
newRow["DataColumn2"] = "Mercury";
newRow["DataColumn3"] = "First planet in the system";
ReportDataTable.Rows.Add(newRow);
you can repeat this as many times you want.
Now that the DataSet is created, We can create an instance of our crystal report as below and Set its DataSource
//Create a report bbject as below
ReportDocument myReport = new MyCrystalReport();
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
namespace CrystalReportApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void GenerateReport()
{
ReportDocument myReport = new MyCrystalReport();
DataSet tempDataSet = GenerateReportDataSet();
myReport.SetDataSource(tempDataSet);
crystalReportViewer1.ReportSource = myReport;
}
private DataSet GenerateReportDataSet()
{
//Create a new datatable
DataTable ReportDataTable = new DataTable();
ReportDataTable.TableName = "ReportDataTable";
//Add Columns to this table
ReportDataTable.Columns.Add("DataColumn1");
ReportDataTable.Columns.Add("DataColumn2");
ReportDataTable.Columns.Add("DataColumn3");
//Create a DataSet object
DataSet ReportDataSet = new DataSet();
//Add this table to the DataSet object
ReportDataSet.Tables.Add(ReportDataTable);
DataRow newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 1;
newRow["DataColumn2"] = "Mercury";
newRow["DataColumn3"] = "First planet in the system";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 2;
newRow["DataColumn2"] = "Venus";
newRow["DataColumn3"] = "Second planet in the system";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 3;
newRow["DataColumn2"] = "Earth";
newRow["DataColumn3"] = "This is where we live";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 4;
newRow["DataColumn2"] = "Mars";
newRow["DataColumn3"] = "Where we are trying to go";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 5;
newRow["DataColumn2"] = "Jupiter";
newRow["DataColumn3"] = "The Giant";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 6;
newRow["DataColumn2"] = "Saturn";
newRow["DataColumn3"] = "Planet of Rings";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 7;
newRow["DataColumn2"] = "Uranus";
newRow["DataColumn3"] = "Boring planet";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 8;
newRow["DataColumn2"] = "Neptune";
newRow["DataColumn3"] = "Boring again";
ReportDataTable.Rows.Add(newRow);
newRow = ReportDataTable.NewRow();
newRow["DataColumn1"] = 9;
newRow["DataColumn2"] = "Pluto";
newRow["DataColumn3"] = "Some say this is not a planet";
ReportDataTable.Rows.Add(newRow);
return ReportDataSet;
}
private void crystalReportViewer1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
GenerateReport();
}
}
}