C# WinfForm 控件之dev报表 XtraReport (八)动态生成报表
功能说明:生成一个报表文件DV1,保存到本地AA.rep,再重新加载这个文件到DV2
1.布局如下图:
panel1 上有三个button
panel2上有个documentView dv1
panel3上有个dv2
panel2与panel3之间有一个splitter
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Data.SqlClient;
using DevExpress.XtraReports.UI; namespace 收银test
{
public partial class frmCreateReport : DevComponents.DotNetBar.Metro.MetroForm
{ public frmCreateReport()
{
InitializeComponent(); button1.Click += Button1_Click;
button2.Click += Button2_Click;
button3.Click += Button3_Click;
} //
//加载报表
private void Button3_Click(object sender, EventArgs e)
{
XtraReport xr = new XtraReport();
xr.LoadLayout("AA.rep");
xr.DataSource = GetDateSet();
xr.CreateDocument();
dv2.DocumentSource = xr;
} //
//保存报表
private void Button2_Click(object sender, EventArgs e)
{
try
{
((XtraReport)Dv1.DocumentSource).SaveLayout("AA.rep");
MessageBox.Show("保存成功");
}
catch (Exception ex)
{ MessageBox.Show(ex.Message.ToString()); }
} //
//生成报表
private void Button1_Click(object sender, EventArgs e)
{
/*
0.创建数据集
1.创建报表
2.创建容器 及 控件
*/ DataSet ds = GetDateSet(); XtraReport xr = new XtraReport();
xr.DataSource = ds; iniXRComponent(xr); xr.CreateDocument();
Dv1.DocumentSource = xr;
} //
//创建容器及控件
private void iniXRComponent(XtraReport xr)
{
//添加 带区
DetailBand detail = new DetailBand();
PageHeaderBand pageHeader = new PageHeaderBand();
ReportFooterBand reportFooter = new ReportFooterBand(); detail.HeightF = ;
reportFooter.HeightF = ;
pageHeader.HeightF = ; xr.Bands.AddRange(new Band[] { detail, pageHeader, reportFooter }); //添加控件
InitDetailsBasedonXRTable(xr);
} public void InitDetailsBasedonXRTable(XtraReport rpt)
{
DataSet ds = (DataSet)rpt.DataSource;
int colCount = ds.Tables[].Columns.Count;//列数
int colWidth = (rpt.PageWidth - (rpt.Margins.Left + rpt.Margins.Right)) / colCount;//每列宽 //创建一个列表头
XRTable tableHeader = new XRTable();
tableHeader.HeightF = ;
tableHeader.WidthF = (rpt.PageWidth - (rpt.Margins.Left + rpt.Margins.Right)); XRTableRow headerRow = new XRTableRow();
headerRow.WidthF = tableHeader.WidthF;
tableHeader.Rows.Add(headerRow);
headerRow.BackColor = Color.Gray;
headerRow.ForeColor = Color.White; //创建数据
XRTable tableDetail = new XRTable();
tableDetail.HeightF = ;
tableDetail.Width = (rpt.PageWidth - (rpt.Margins.Left + rpt.Margins.Right)); XRTableRow detailRow = new XRTableRow();
detailRow.Width = tableDetail.Width;
tableDetail.Rows.Add(detailRow); //tableDetail.EvenStyleName = "EvenStyle";
//tableDetail.OddStyleName = "OddStyle"; //加入cell表头用列名填充 表身用数据填充
for (int i = ; i < colCount; i++)
{
XRTableCell headerCell = new XRTableCell();
headerCell.WidthF = colWidth;//列宽
headerCell.Text = ds.Tables[].Columns[i].Caption; XRTableCell detailCell = new XRTableCell();
detailCell.WidthF = colWidth;
detailCell.DataBindings.Add("Text", null, ds.Tables[].Columns[i].Caption); if (i == )
{
headerCell.Borders = DevExpress.XtraPrinting.BorderSide.All;
detailCell.Borders = DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom;
}
else
{
headerCell.Borders = DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom;
detailCell.Borders = DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom;
} //填充到对应位置
headerRow.Cells.Add(headerCell);
detailRow.Cells.Add(detailCell);
} // 加到report中
rpt.Bands[BandKind.PageHeader].Controls.Add(tableHeader);
rpt.Bands[BandKind.Detail].Controls.Add(tableDetail);
} //创建数据集
private DataSet GetDateSet()
{
DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection("server =.;uid=sa;pwd=123;database=test"))
{
using (SqlDataAdapter adp = new SqlDataAdapter("select id,userName,roles from usersTmp", con))
{ adp.Fill(ds); }
}
return ds;
}
}
}
效果:
C# WinfForm 控件之dev报表 XtraReport (八)动态生成报表的更多相关文章
- 关于devexpress报表XtraReport,动态修改报表样式(.repx格式),动态添加数据并使用的理解
一.基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控 ...
- C# WinfForm 控件之dev报表 XtraReport (四) 动态绑定主从关系表
一般的单据都是由主从关系的,比如部门与人员.单据表头与表身.仓库与存货.分类与档案等等 所以主从关系是报表用的最多的 1.准备数据库 简单方便 --主表 create table RdRecord ( ...
- C# WinfForm 控件之dev报表 XtraReport(三) 动态数据绑定
代码还用上一节的,把reportFrx的dataSource去掉.各cell绑定的字段也去掉,有了第二节的基础,现在看这个ms就不难了 无非就是 传到reportFrx一个数据集 在把这个数据集 绑到 ...
- C# WinfForm 控件之dev报表 XtraReport (二) 固定数据绑定
已经子解了XtraReport的初步用法 现在再进一步了解 数据绑定 我们还是先不整高深的 先来个写死的 让我们的数据库数据可以通过报表呈现先 1.准备 还在上节基础上 只不过我把form1 中的Do ...
- C# WinfForm 控件之dev报表 XtraReport (一) 初了解
这个控件其实用法和fast也差不了太多但如果没接触过 真有种老虎吃天的感觉 1.这里先不说那些高深的先说最基本的 在窗体中显示一个设计好的 模版 1.1一般设计和这个程序是分着的为了方便我就先把他们合 ...
- C# WinfForm 控件之dev图表 ChartControl
dev 图表控件 学习连接 新建一个winformApp form1上放一个button 再放一个chartControl Name 为cct 直接上代码 private void button1_C ...
- C# WinfForm 控件之dev电子表格 SpreadSheet
网上找了一些资料可是不得入门 只能再回过头来看demos 看了一点 例子大多继承自SpreadsheetRibbonTutorialControlBase 这个类,它又继承自SpreadSheetTu ...
- C# WinfForm 控件之dev报表 XtraReport (七)报表合并
这个不是太难,新建两个报表 一个form窗体 窗体上放个documentView 代码如下 XtraReport2 xr2 = new XtraReport2(); xr2.CreateDocume ...
- C# WinfForm 控件之dev报表 XtraReport (五) 并排报表
有了前边的基础这个就很简单了,建一个容器报表 在detail,上放两个xrsubReport.再做两个明细报表,分别指定到xrsubreport就可以了
随机推荐
- Python文章导航
1.Python+Eclipse安装.配置: http://www.cnblogs.com/rhyswang/p/8087752.html 2.数学运算及math库: http://www.cnblo ...
- RegionServer Splitting Implementation:regionServer 分裂过程分析
图片: RegionServer Split Process The RegionServer decides locally to split the region, and prepares th ...
- USACO 2014 US Open Decorating The Pastures
题目大意: 给定n个点m条边的无向图 判断这个图能否将所有点依次染色为F J F J 若能输出最多能染多少个J 若不能输出-1 就是给一个图01染色 过程中判断是否出现不符合的情况 即点1到点2到点3 ...
- kmp与扩展kmp模板
kmp 1 #include <algorithm> 2 #include <iostream> 3 #include <cstring> 4 #include & ...
- spring security 学习二
doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页面 1.在securityConfigy ...
- 为IIS服务器配置SSL,并设置为默认使用https协议访问网站
要使网站支持https协议,需要SSL证书,我的服务器和域名都是在阿里云购买的,所以这里我演示阿里云获取SSL证书的方法 我先说下我的服务器环境:windows server 2012 + IIS8. ...
- 2018-5-28-WPF-popup置顶
title author date CreateTime categories WPF popup置顶 lindexi 2018-05-28 09:58:53 +0800 2018-2-13 17:2 ...
- 开启.NET Core 3时代,DevExpress v19.2.5带你全新启航
DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...
- 对AngularJs的简单了解
一.简单介绍 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得 ...
- Yii2中GridView
Yii2 GridView与dropdownList结合的用法 http://www.yiichina.com/tutorial/473 <?=$form->field($model, ' ...