原文:DevExpress.XtraReports.UI.XtraReport 动态报表

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraTab;
using DevExpress.XtraPrinting.Control;
using DevExpress.XtraReports.UI;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

private List<XtraTabPage> tabpage = new List<XtraTabPage>();
        private List<PrintControl> printcon = new List<PrintControl>();
        private List<XtraReport> report = new List<XtraReport>();
        private string path = string.Empty;
        private void Form1_Load(object sender, EventArgs e)
        {
            path = AppDomain.CurrentDomain.BaseDirectory;
            // TODO: 这行代码将数据加载到表“dataSet1.Orders1”中。您可以根据需要移动或删除它。
            this.orders1TableAdapter.Fill(this.dataSet1.Orders1);
            // TODO: 这行代码将数据加载到表“dataSet1.Orders”中。您可以根据需要移动或删除它。
            this.ordersTableAdapter.Fill(this.dataSet1.Orders);

dataSet1.Tables["DataTable1"].Rows.Add("page0", "Orders", "XtraReport.repx");
            dataSet1.Tables["DataTable1"].Rows.Add("page1", "Orders1", "XtraReport2.repx");
            dataSet1.Tables["DataTable1"].Rows.Add("page2", "Orders", "XtraReport.repx");
            dataSet1.Tables["DataTable1"].Rows.Add("page3", "Orders1", "XtraReport2.repx");
            dataSet1.Tables["DataTable1"].Rows.Add("page4", "Orders1", "XtraReport2.repx");
            foreach (DataRow dr in dataSet1.Tables["DataTable1"].Rows)
            {

XtraTabPage page = new XtraTabPage();
                XtraReport2 xrepot = new XtraReport2();
                string pa = path + "\\" + dr["DataColumn3"].ToString();
                xrepot.LoadLayout(pa);
                xrepot.Name = dr["DataColumn1"].ToString();
                page.Name = dr["DataColumn1"].ToString();
                page.Text = dr["DataColumn1"].ToString();
                page.TabPageWidth = 100;
                PrintControl print = new PrintControl();
                print.Name = dr["DataColumn1"].ToString();
                print.Dock = System.Windows.Forms.DockStyle.Fill;
                print.PrintingSystem = xrepot.PrintingSystem;       
                xrepot.DataSource = dataSet1.Tables[dr["DataColumn2"].ToString()];
                xrepot.CreateDocument();
                report.Add(xrepot);
                printcon.Add(print);
                page.Controls.Add(print);
                tabpage.Add(page);
                xtraTabControl1.TabPages.Add(page);
            }

//dataSet1.Tables["DataTable1"].Rows.Add("page0", "Orders");
        }

private void xtraTabControl1_SelectedPageChanged(object sender, TabPageChangedEventArgs e)
        {
            string selpage = xtraTabControl1.SelectedTabPage.Text.ToString();
            foreach (XtraReport rp in report)
            {
                if (rp.Name == selpage)
                {
                    /*
                    string dc = string.Empty;
                    foreach (DataRow r in dataSet1.Tables["DataTable1"].Rows)
                    {
                        if (r["DataColumn1"].ToString() == selpage)
                            dc = r["DataColumn2"].ToString();
                    }
                    rp.DataSource = dataSet1.Tables[dc];*/
                    rp.CreateDocument();

}
            }
            foreach (PrintControl prc in printcon)
            {
                if (prc.Name == selpage)
                    printBarManager1.PrintControl = prc;
            }
        }

private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            dataSet1.Tables["Orders1"].Rows.Clear();
            dataSet1.Tables["Orders"].Rows.Clear();
            /*
            foreach (XtraReport rp2 in report)
            {
                rp2.CreateDocument();
            }*/
        }

private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.orders1TableAdapter.Fill(this.dataSet1.Orders1);
            // TODO: 这行代码将数据加载到表“dataSet1.Orders”中。您可以根据需要移动或删除它。
            this.ordersTableAdapter.Fill(this.dataSet1.Orders);
        }
    }
}

DevExpress.XtraReports.UI.XtraReport 动态报表的更多相关文章

  1. C#打印模板设计,E店宝打印模板设置,winfrom打印模板设计,DevExpress.XtraReports.UI.XRTable 表格代码生成。

    一.打印效果 二.代码编辑 1 .table1 : table控件的Name: 2.label33 :label控件 实现绑定[外部平台单号]的控件: 3.label32:绑定[E店宝订单编号](S开 ...

  2. Devexpress Xtrareports 创建多栏报表

    根据官方回答:多列或多行(取决于当前的多栏设置)呈现数据的报表 这种报表是有用的,例如,当每个明细区都只显示少量数据.并且需要在一列的右侧打印下一个明细区时,这样就能充分利用整个页面的宽度,此外,当创 ...

  3. 动态传递参数到DevExpress.XtraReports的小结

    原文:动态传递参数到DevExpress.XtraReports的小结 前两种方法和WinForm一样,可以传递参数.数组.实体对象.DataTable等1. 采用构造函数具体用法:在Report中p ...

  4. DevExpress XtraReports 入门五 创建交叉表报表

    原文:DevExpress XtraReports 入门五 创建交叉表报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪 ...

  5. DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表

    原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助 ...

  6. [原创]Devexpress XtraReports 系列 8 创建Drill-Through报表

    哎,今天公司工作忙了一天,一直没有时间写写东西.所以只能昨天晚上加班写咯.苦逼啊...... 昨天发表了Devexpress XtraReports系列第七篇[原创]Devexpress XtraRe ...

  7. [原创]Devexpress XtraReports 系列 1 创建静态报表

    在各种管理系统中,报表是必不可少的.报表是数据最直观体现的方式之一 以前,屌丝我是微软的忠实粉丝,所以报表工具就是微软自带的RDLC... 不可否认的是RDLC的功能是非常强大的.能够满足绝大多数的要 ...

  8. DevExpress XtraReport - 动态加载报表布局模板

    XtraReport的报表模板文件是.repx,下面的代码演示动态加载报表布局模板. XtraReport mReport = new XtraReport(); mReport.LoadLayout ...

  9. [原创]Devexpress XtraReports 系列 3 创建主从报表

    昨天写了系列的第二篇Devexpress XtraReports 系列 2 创建表格报表 . 今天我们来继续系列 3 创建主从报表 首先我们来看看最后实现的效果.Demo最后附上. 开始吧. 第一步, ...

随机推荐

  1. python中使用traceback来追踪异常

    test1.py中,当分母为0的时候,调用系统退出 #!/usr/bin/python import sys def division(a=1, b=1): if b==0: print 'b eq ...

  2. 解决mongodb设备mongod命令不是内部或外部的命令

    1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现下面文件 在安装的盘C:下建立mongodb目录,拷贝bin目录到该目录 ...

  3. 集群部署及测试SolrCloud-5

    SolrCloud-5.2.1 集群部署及测试   一. 说明 Solr5内置了Jetty服务,所以不用安装部署到Tomcat了,网上部署Tomcat的资料太泛滥了. 部署前的准备工作: 1. 将各主 ...

  4. [TWRP 2.8.4 ] 小米 3W 中文-英文版本 twrp

    经过半个小时的代码修改,从 2.7.0 移植到 2.8.4 的源代码上. 汉化操作是使用切换语言选项来实现的. 注意: 此版本的 twrp 还不支持双系统切换功能. 作者:laser杨万荣 如果需要转 ...

  5. 小米2S 中文和英文支持TWRP,真实双系统支持

    经过我几天的努力小米2S的TWRP 的功能已经完美了. 支持功能 : 中文和英文显示能相互切换 真实双系统功能已经完成95%. 刷入手机方法.由于时间原因我只制作了img文件.没有制作成卡刷包格式. ...

  6. android-sdk-windows下载版

    Android SDK 4.0.3 开发和执行环境配置 近期又装了一次最新版本号的ADK环境 眼下最新版是Android SDK 4.0.3 本文的插图和文本尽管是Android2.2的 步骤都是一样 ...

  7. CAS实现SSO单点登录原理(转)

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  8. oracle dblink造成远程数据库session过多

    现场报网公司数据库连不上,先检查了下数据库processes=1500,session=2200.我认为非常大啊.这个数据库没有几个人用. 查看v$session中的session最多是哪个machi ...

  9. 连接字符串中Min Pool Size的理解是错误,超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

    Min Pool Size的理解是错误的 假设我们在一个ASP.NET应用程序的连接字符串中将Min Pool Size设置为30: <add name="cnblogs" ...

  10. iphone内容开发技术学习

    一.iOS基础 1 开发环境搭建以及IOS组件.框架的概要介绍. 2 mac操作系统与iOS操作系统 3 xcode IDE开发环境的初始 二.C语言基础 1数据类型.表达式与控制流程语句 2数组.函 ...