[原创]Devexpress XtraReports 系列 8 创建Drill-Through报表
哎,今天公司工作忙了一天,一直没有时间写写东西。所以只能昨天晚上加班写咯。苦逼啊。。。。。。
昨天发表了Devexpress XtraReports系列第七篇[原创]Devexpress XtraReports 系列 7 创建Drill-Down(向下钻取)报表,今天我们继续。
今天的主题是创建Drill-Through报表。
首先我们来看看最后实现的效果。Demo最后附上。
今天学了弄了一个新东西,就是录制gif图片。哈哈
接下来开始讲解如何一步一步做出这个报表:
第一步,创建如上窗体,拉入控件SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl,简单布局我就不多说了,跟上篇一样的布局 ,详见:http://www.cnblogs.com/lhmlyx2723356/p/3286101.html
提示一点:DocumentViewer控件一开始是没有打印工具栏的,以前12.几的版本,添加打印工具栏是拖入PrintSystem控件,但是13.1.5我发现没有了,后来在官网找到了答案。控件12.几的控件PrintControl, PringBarManager, PrintRibbonController都集成到了DocumentViewer ,详情请参考http://www.devexpress.com/Support/Center/Question/Details/Q504260,
那13.1.5如何添加打印工具栏呢?如图:选中DocumentViewer控件右上角的三角符号,点击红色区域中的其中一项都可以创建打印工具栏。
第二步,创建一个DrillThroughRpt报表文件和一个点击DrillThroughRpt报表跳转到的明细报表DrillThroughRpt2报表。如图:
第三步,我们利用数据库做一张简单的表并输入一些测试值。如图:
第四步,数据库表,布局都做好了,接下来我们就来处理相对应的事件了。输入文本框的值,点击按钮把查询出来的数据源绑定到报表中
a,修改DrillThroughRpt报表文件的构造函数,让它在实例化的时候可以接收数据源。
public DrillThroughRpt(DataSet ds)
{
InitializeComponent();
this.DataSource = ds;
this.DataMember = "Dept";
this.xrLabel3.DataBindings.Add("Text", ds, "dept_name");
}//把当前行赋值到Label的Tag属性
private void xrLabel3_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
((XRLabel)sender).Tag = GetCurrentRow();
}private void xrLabel3_PreviewClick(object sender, PreviewMouseEventArgs e)
{
DrillThroughRpt2 detailReport = new DrillThroughRpt2();//传递参数
detailReport.dept_id.Value = (int)((DataRowView)e.Brick.Value).Row["dept_id"];
detailReport.dept_name.Value = ((DataRowView)e.Brick.Value).Row["dept_name"].ToString();
detailReport.ShowPreviewDialog();
}b,设置DrillThroughRpt报表2
技巧:最开始,我也不知道如何定义参数,你可以通过向导方式去生成报表,然后再去Designer.cs文件查看生成的代码,我们就知道如何用代码方式去生成一些我们不知道的东西了。
//定义传递参数dept_id,dept_name
public DevExpress.XtraReports.Parameters.Parameter dept_id = new DevExpress.XtraReports.Parameters.Parameter();
public DevExpress.XtraReports.Parameters.Parameter dept_name = new DevExpress.XtraReports.Parameters.Parameter();public DrillThroughRpt2()
{
InitializeComponent();this.dept_id.Name = "dept_id";
this.dept_id.Type = typeof(int);this.dept_name.Name = "dept_name";
this.xrLabel2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding(dept_name, "Text", "")});this.FilterString = "dept_id = ?dept_id";
this.Parameters.AddRange(new DevExpress.XtraReports.Parameters.Parameter[] {
this.dept_id,
this.dept_name});
this.RequestParameters = false;this.xrTableCell1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "user_id")});DataSet ds = Bind();
this.DataSource = ds;
this.xrTableCell1.DataBindings.Add("Text", ds, "user_id");
this.xrTableCell2.DataBindings.Add("Text", ds, "username");
}//获取数据源
public DataSet Bind()
{
DataSet ds = new DataSet();
try
{
SqlConnection con = new SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=ReportDeom");
SqlDataAdapter adapter;
con.Open();
adapter = new SqlDataAdapter("SELECT * FROM Users", con);
adapter.Fill(ds, "Users"); ;
con.Close();
}
catch (Exception ex)
{throw ex;
}return ds;
}
c,获取数据源
private DataSet BindRpt()
{
DataSet ds = new DataSet();
try
{
SqlConnection con = new SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=ReportDeom");
SqlDataAdapter adapter;
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM Dept where dept_name=@name OR @name='' ", con);
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@name",txtName.Text.Trim())
};
cmd.Parameters.AddRange(paras);
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds, "DrillThroughRpt"); ;
con.Close();
}
catch (Exception ex)
{
throw ex;
}
return ds;
}d,单击按钮,绑定数据到报表中
private void btnShowReport_Click(object sender, EventArgs e)
{
DataSet ds = BindRpt();
DrillThroughRpt Rpt = new DrillThroughRpt(ds);
this.documentViewer1.DocumentSource = Rpt;
Rpt.CreateDocument();
}到此,报表就Drill-Through报表就完成了。
个人表达能力有限,如果有疑问,欢迎大家下载示例代码,一目了然。
Demo地址:http://yunpan.cn/QXpSNHXT5PBFr 访问密码 5817
[原创]Devexpress XtraReports 系列 8 创建Drill-Through报表的更多相关文章
- [原创]Devexpress XtraReports 系列 4 创建多栏报表
昨天我们完成了 [原创]Devexpress XtraReports 系列 3 创建主从报表 今天我们继续学习新的一种报表模式:多栏报表.(Demo源码,数据库最后附上) 或许很多人会问什么是多栏报表 ...
- [原创]Devexpress XtraReports 系列 9 创建邮件合并报表
昨天发表了Devexpress XtraReports系列第八篇[原创]Devexpress XtraReports 系列 8 创建Drill-Through报表,今天我们继续. 今天的主题是创建邮件 ...
- [原创]Devexpress XtraReports 系列 5 创建交叉报表
昨天我们已经介绍了如何创建多栏报表,详见:[原创]Devexpress XtraReports 系列 4 创建多栏报表 今天我们继续我们的XtraReports系列.Demo和数据库文件最后会附上. ...
- [原创]Devexpress XtraReports 系列 10 创建标签报表
今天这篇是Dx Reports 基础初级系列的最后一篇了.以后如果有什么高级的应用,应该另开一个中级使用系列. 昨天发表了Devexpress XtraReports系列第九篇[原创]Devexpre ...
- [原创]Devexpress XtraReports 系列 6 创建并排报表
昨天我们已经介绍了如何创建交叉报表,详见:[原创]Devexpress XtraReports 系列 5 创建交叉报表 今天我们继续我们的XtraReports系列.Demo和数据库文件最后会附上. ...
- [原创]Devexpress XtraReports 系列 7 创建Drill-Down(向下钻取)报表
昨天发表了Devexpress XtraReports系列第六篇[原创]Devexpress XtraReports 系列 6 创建并排报表,今天我们继续. 今天的主题是创建Drill-Down报表. ...
- [原创]Devexpress XtraReports 系列 3 创建主从报表
昨天写了系列的第二篇Devexpress XtraReports 系列 2 创建表格报表 . 今天我们来继续系列 3 创建主从报表 首先我们来看看最后实现的效果.Demo最后附上. 开始吧. 第一步, ...
- [原创]Devexpress XtraReports 系列 2 创建表格报表
昨天发表了Devexpress XtraReports系列开篇,今天我们继续. 今天的主题是创建表格报表. 首先我们来看看最后实现的效果.Demo最后附上. 接下来开始讲解如何一步一步做出这个报表: ...
- [原创]Devexpress XtraReports 系列 1 创建静态报表
在各种管理系统中,报表是必不可少的.报表是数据最直观体现的方式之一 以前,屌丝我是微软的忠实粉丝,所以报表工具就是微软自带的RDLC... 不可否认的是RDLC的功能是非常强大的.能够满足绝大多数的要 ...
随机推荐
- Kafka源码中的Producer Record定义
1.ProducerRecord 含义: 发送给Kafka Broker的key/value 值对 2.内部数据结构: -- Topic (名字) -- PartitionID ( 可选) -- Ke ...
- kafka_2.9.2-0.8.1.1分布式集群搭建代码开发实例
准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置如下:$ cat /etc/hosts # zookeeper hostnames: 192.168.8.182 ...
- BZOJ 3391 Tree Cutting网络破坏
不想写. #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> ...
- Android命令行播放MP3音乐
/*************************************************************************** * Android命令行播放MP3音乐 * 说 ...
- NTP时间服务器配置与解析
NTP时间服务器配置与解析 Edit By ZhenXing_Yu 目 录 编译安装ntp server 2 修改ntp.conf配置文件 2 配置时间同步客户机 2 在服务端验证: 3 在客户端进行 ...
- vector & array
private static const NUM_LOOPS:int = 15; public function VectorTest():void { var vector:Vector.<i ...
- 本地Git环境配置
在Git Bash下获取源码时,提示permission denied publickey. 原因是本地帐号配置不正确,解决办法 生成SSH文件 1,进入Git Bash 2, 输入下面文字 ssh ...
- 删除特定影响因素(字段列)下的重复记录(MySQL)
;CREATE TABLE TabTest ( `id` ) NOT NULL AUTO_INCREMENT ,`factorA` ) NOT NULL DEFAULT ' ' ,`factorB` ...
- myeclipse9 struts2配置
引用struts2所用到的jar web.xml配置如下 <?xml version="1.0" encoding="UTF-8"?> <we ...
- 堪称最好的A*算法
原文地址:http://theory.stanford.edu/~amitp/GameProgramming/ 相关链接:http://www-cs-students.stanford.edu/%7E ...




