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

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

    ~做事情贵在坚持~
  • 相关阅读:
    JavaScript面向对象基础语法总结
    json对象
    关于JavaScript语法的小笔记
    关于JavaScript的小笔记
    html中的a标签的target属性的四个值的区别?
    详解Bootstrap 定义按钮的样式(CSS)
    (负)-margin在页面布局中的应用
    lorem ipsum text占位符
    jQuery动态添加元素事件
    实用|从0到1 搭建Web性能监控系统
  • 原文地址:https://www.cnblogs.com/csMapx/p/2054229.html
Copyright © 2020-2023  润新知