C#下水晶报表的数据动态绑定(推模式, 非关联数据库)

因为项目的中的数据是来源于网络, 而不是数据库, 所有的table 都是动态创建的, 因此使用报表时也需要动态创建.

具体示例如下:

1.  MainForm 下 Data的 获取:

        public DataTable table = new DataTable("myTable");

        // 创建数据表资料
        public void CreateDataTable()
        {
            table.Columns.Clear();

            DataColumn column = new DataColumn("userName", Type.GetType("System.String"));
            column.Caption = column.ColumnName;
            table.Columns.Add(column);

            table.Rows.Clear();
            for (int i = 0; i < 8; i++)
            {
                DataRow newRow = table.NewRow();
                newRow[1] = "Name " + i.ToString();
                table.Rows.Add(newRow);
            }
        }

2 显示报表窗体:

   调用的是带1个参数的 报表窗体的构造函数:
// 显示水晶报表  
private void btnCrystalReport_Click(object sender, EventArgs e)  
{  
    FormCrystal frmreport = new FormCrystal(table);  
 
    frmreport.Text = "水晶报表示例";  
    frmreport.WindowState = FormWindowState.Maximized;      
     
    frmreport.ShowDialog();  
    frmreport.Dispose();  
}  
     

3. 报表窗体的构造函数(带1个参数):

        public FormCrystal(DataTable table)
        {
            InitializeComponent();
            ReportDocument doc = new ReportDocument();           
            string rptname= @"D:\C#.Projects\CSProjects\csReportExam\CrystalReport1.rpt"; // 设计的报表
            doc.Load(rptname);
            doc.SetDataSource(table); // 设置数据源
              this.crystalReportViewer1.ReportSource = doc;  // 加载报表
          
        }

4. 水晶报表的设计:

(1).  报表窗体上放置一 CrystalReportViewer 控件,  并创建 一个报表: CrystalReport1.rpt;

(2).  应用程序项目添加新项目:  数据 -- 数据集 , 保存为 DataSet1.Xsd;

(3). 在数据集视图下, 添加 Table , 此时主要名字一定要和 传递过来的表名一致, 命名为 myTable; 按照 myTable 中的 Column 添加列, 这里只有一个: userName, 命名也要保持一致.(这里很关键, 否则报表中就不能显示出数据.)

(4). 在报表设计视图下, 打开"数据库专家",  选 "项目数据" -- "ADO.NET 数据集" , 将表加入到"选定的表"中, 再回到视图下就可以把需要在报表显示的列(字段)拖动 报表中的"详细字段"中.

这样就实现了一个基本的水晶报表动态的数据绑定.

posted @ 2011-05-23 12:32  沧海小小粟  阅读(3989)  评论(1编辑  收藏  举报