zoukankan      html  css  js  c++  java
  • 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 数据集" , 将表加入到"选定的表"中, 再回到视图下就可以把需要在报表显示的列(字段)拖动 报表中的"详细字段"中.

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

    ~做事情贵在坚持~
  • 相关阅读:
    MySQL数据类型与操作
    MySQL 初识
    python中的线程
    python中的进程
    python中基于tcp协议与udp的通信(数据传输)
    字符串str.format()方法的个人整理
    进度条打印函数
    套接字错误搜集
    正则表达式 整理(w s d 点 贪婪匹配 非贪婪匹配 * + ? {} | [] ^ $  单词边界 分组、re.findall()、re.split()、re.search()、re.match()、re.compile()、re.sub())
    软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
  • 原文地址:https://www.cnblogs.com/csMapx/p/2054229.html
Copyright © 2011-2022 走看看