zoukankan      html  css  js  c++  java
  • ActiveReports报表数据源:运行时数据源

    ActiveReports 支持在设计时和运行时设置报表数据源,本文将重点介绍如何在运行时为区域报表和RDL/页面报表设置报表数据源。

    • ·第一步: 在工程中创建一个名为 SectionReport_DataSource_RunTime.cs 的基于代码的区域报表

    区域报表运行时数据源

    第二步:创建完成之后,会自动打开报表设计界面,此时,我们可以在报表设计界面添加文本框(TextBox)等控件用于显示数据源数据。与 设计时数据源 不同,运行时数据源只需直接设置文本框控件的DataField属性便可完成与数据源的绑定,比如数据源包括以下字段:产品编号、产品名称、单价和库存量,我们只需在报表的 detail 区域添加四个文本框,并分别设置其DataField属性即可。如下图:

    第三步:在运行时通过 DataSource 属性设置数据源

    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        SectionReport_DataSource_RunTime sReport1 = new SectionReport_DataSource_RunTime();
        sReport1.DataSource = GetDataSource();
        sReport1.Run();
        viewer1.Document = sReport1.Document;
    }
    private DataTable GetDataSource()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("产品编号");
        dt.Columns.Add("产品名称");
        dt.Columns.Add("单价");
        dt.Columns.Add("库存量");
        dt.Rows.Add("A10002", "苹果", 20, 50);
        dt.Rows.Add("A15681", "香蕉", 20, 50);
        dt.Rows.Add("A15681", "菠萝", 20, 50);            
        return dt;
    }
    • ·第一步: 在工程中创建一个名为 PageReport_DataSource_RunTime.rdlx 的页面报表

    RDL/页面报表运行时数据源

     

    第二步:从Visual Studio菜单栏中的“视图”->“其他窗口”->“报表资源管理器”中打开ActiveReports报表资源管理器,此时,你可以看到“数据源”节点,在该节点上鼠标右键选择“添加数据源”菜单项,在弹出的“报表数据源”对话框中选择类型Dataset Provider,如下图:

    点击“确定”按钮,完成数据源创建操作,此时,在报表资源管理器窗口中的“数据源”节点下新增了一个名为“DataSource1”的子节点,在该节点上点击鼠标右键,选择“添加数据集”菜单项,在弹出对话框的“字段”选项卡中添加产品编号产品名称单价库存量四个字段,然后点击“确定”按钮完成数据集创建操作。返回到报表资源管理窗口之后,点击“DataSet1”节点,可以看到刚才添加的四个字段。

    第三步:在Visual Studio工具箱中的表格控件(Table)拖拽到报表设计界面,然后点击表格明细行中的单元格,此时,会自动显示DataSet1中数据集中的全部字段,然后,为每个单元格指定需要绑定的字段。

    第四步:在运行时通过 LocateDataSource 事件加载数据源

    private DataTable GetDataSource()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("产品编号");
        dt.Columns.Add("产品名称");
        dt.Columns.Add("单价");
        dt.Columns.Add("库存量");
        dt.Rows.Add("A10002", "苹果", 20, 50);
        dt.Rows.Add("A15681", "香蕉", 20, 50);
        dt.Rows.Add("A15681", "菠萝", 20, 50);
        return dt;
    }
    void runtime_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
    {
        if (args.DataSourceName == "DataSource1")
        {
            if (args.DataSetName == "DataSet1")
            {
                args.Data = GetDataSource();
            }
        }
    }
    private void viewer1_Load(object sender, EventArgs e)
    {
        GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport
        (new System.IO.FileInfo("../../PageReport_DataSource_RunTime.rdlx"));
        GrapeCity.ActiveReports.Document.PageDocument runtime = new GrapeCity.ActiveReports.Document.PageDocument(pageReport);
        runtime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(runtime_LocateDataSource);
        viewer1.LoadDocument(runtime);
    }
  • 相关阅读:
    gain 基尼系数
    luogu P5826 【模板】子序列自动机 主席树 vector 二分
    牛客挑战赛39 树与异或 离线 树上莫队 树状数组 约数
    4.22 省选模拟赛 三元组 manacher 回文自动机
    4.22 省选模拟赛 最优价值 网络流 最大权闭合子图
    4.18 省选模拟赛 消息传递 树剖 倍增 线段树维护等比数列
    luogu P4008 [NOI2003]文本编辑器 splay 块状链表
    牛客挑战赛39 密码系统 后缀数组
    luogu P1526 [NOI2003]智破连环阵 搜索+最大匹配+剪枝
    luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并
  • 原文地址:https://www.cnblogs.com/Jeely/p/10965818.html
Copyright © 2011-2022 走看看