• c# 报表练习笔记


    报表数据来自数据库

    A-1.创建DataSet。选择“服务器资源管理器”下的数据连接,选择数据库的某个表,拖到xsd的面板中。

    A-2.添加报表。“报表数据”,“新建数据集...”。“对象”,选择刚才生成的DataSet。可以看到数据集中出现刚才的表格。最上面填充数据集名称,这个名称下面会用到,所以尽量不随意命名。下面数据绑定的过程中可能会用。

    A-3.添加完报表数据后,继续编辑报表。从工具箱中拖出“表”、“文本框”..等控件来设计报表的前台。

    A-4.绑定数据。在输入框中右键,“表达式”,在=后面编写输入框要表现的信息。常用:="工程师:" & First(Field!Designer.Value, "Employees")。其中'&'连接两段独立的信息,"First"表示第一条数据,"Field!"说明哪个字段名称,"Employees"是表名。如果信息是一段固定的文字,可直接通过输入框输入。(此处没有理解表的组有什么作用)

    A-5.完成以上步骤后,设计前台WinForm。新建一个WinForm,拖入控件"ReportViewer"。

    A-6.进入后台,编写绑定数据函数。

    DsDataBaseTableAdapters.AAA_0228TableAdapter AAA_0228TableAdapter =
    new DsDataBaseTableAdapters.AAA_0228TableAdapter();
    DsDataBase ds = new DsDataBase();
    AAA_0228TableAdapter.ClearBeforeFill = true;
    AAA_0228TableAdapter.Fill(ds.AAA_0228);
    
    ReportDataSource dataSource1 = new ReportDataSource("DataSet1", ds.Tables["AAA_0228"]);
    reportViewer1.LocalReport.DataSources.Add(dataSource1);
    reportViewer1.LocalReport.ReportEmbeddedResource = "ReportPractise.ReportDataBase.ReportDataBase.rdlc";

    报表数据来自本地XML

    B-1.创建DataSet。"工具箱","DataTable“,新增和编辑表的列。

    B-2.A-1/A-2/A-3/A-4

    B-3.创建一个XML文件,将其属性改为“复制到输出目录--始终复制”。并在xml中编写内容,内容与创建的DataSet的表结构一样。数据一一对应。最终会将xml的数据读取到DataSet的表中,通过前台呈现出来。

    B-4.A-5/A-6。绑定数据的函数如下。

    using (var ds = new DataSet())
    {
        ds.ReadXml("ReportXML\\BasicInfo.xml");
        ReportDataSource dataSource1 = new ReportDataSource("DataSet1", ds.Tables["BasicInfo"]);
        reportViewer1.LocalReport.DataSources.Add(dataSource1);
        reportViewer1.LocalReport.ReportEmbeddedResource = "ReportPractise.ReportXML.ReportXML.rdlc";
    }

    数据集中有多个表格,也就是说报表数据来源自多个表格。

    1.创建完DataSet后,在DataSet中创建多个DataTable。可以是数据库也可以是自定义。以自定义为例。

    2.创建报表。在报表的报表数据中添加数据集,多次添加,将最终需要获取表现出来的DataTable全部添加到数据集中。

    3.编辑完报表之后,创建XML数据。同样需要构造所有的表格数据。

    4.界面绑定数据的函数如下:

    using (var ds = new DataSet())
    {
        ds.ReadXml("ReportMultiTable\\TestResult.xml");
    
        ReportDataSource dataSource1 = new ReportDataSource("dsMain", ds.Tables["Main"]);
        ReportDataSource dataSource2 = new ReportDataSource("dsDetail", ds.Tables["Detail"]);
        reportViewer1.LocalReport.DataSources.Add(dataSource1);
        reportViewer1.LocalReport.DataSources.Add(dataSource2);
    
        reportViewer1.LocalReport.ReportEmbeddedResource = "ReportPractise.ReportMultiTable.ReportMultiTable.rdlc";
    }

    练习项目

    遗留问题:编辑rdlc报表的过程中,“分组”是什么意思?reportViewer可以设置绑定报表,为什么有的时候绑定完了之后会自动生成Adapter.fill,而有时候又不行呢?同样的数据,同样的操作,在两个解决方案中打开,一个会自动在Load里面生成Fill(),同时自动添加DataSet,Adapter,BindingData,另一个只生成了BindingData......

  • 相关阅读:
    rpm
    java 锁4
    java 锁3
    小技巧:在线生成按钮Shape的网站
    Python入门:内置函数
    山东理工大学SDUT
    Android项目实战(四十):Andoird 7.0+ 安装APK适配
    Android打赏功能:支付宝转账
    浅谈Android数据库DBFlow
    acffo的开源项目汇总
  • 原文地址:https://www.cnblogs.com/icyJ/p/ReportViewer.html
Copyright © 2020-2023  润新知