像医疗行业中常常会有对报表续打功能的要求,即数据更新之后,续接上次打印的位置,开始打印更新的数据。这种需求非常普遍,应用非常广泛。
ActiveReports在打印报表方面可以说已经做的非常完善,今天我们就来学习如何在ActiveReports中实现续打功能。
开发环境:
区域报表+Visual Studio
实现思路:
根据用户选择的续打的位置即数据行,开始打印,即所选择行之后的所有数据可见, 而之前的数据隐藏。
实现方法:
1. 新建基于代码的区域报表 SectionReport1
2. 定义变量
public int count=0;//用于记录当前已经加载的数据行数。 public int Total;// 接收 用户要续打的行号 public int TotalOfPage = 13;//每页固定显示的行数量 public int pagenumberTemp;//获取当前页码 public int n;
3. 增加SectionReport1 的构造函数,用来传递用户所选择的数据行
public SectionReport1(int TotalTemp) { //初始化 续打的行号 Total = TotalTemp; InitializeComponent(); }
3. 添加 FetchData事件,这个事件中表示每显示一条记录,则执行一次该方法,所以在这个方法中添加计数器,表示现在报表已经处理了多少条记录了。
private void SectionReport1_FetchData(object sender, FetchEventArgs eArgs) { //每显示一条记录+1; count++; }
4. 添加PageStart事件表示所选行之前页的内容不可见。
private void SectionReport1_PageStart(object sender, EventArgs e) { //每页初始化时,判断当前页是“续打行” 之前的页或之后的页 pagenumberTemp = Convert.ToInt32(this.PageNumber);//获取当前页号 // 之前页所有控件隐藏 if(pagenumberTemp< n+1) { foreach (ARControl item in this.detail.Controls) { item.Visible = false; } foreach (ARControl item in this.pageHeader.Controls) { item.Visible = false; } foreach (ARControl item in this.pageFooter.Controls) { item.Visible = false; } } // 当前页,之前的先隐藏控件,在Detatil区域中 if (pagenumberTemp == n + 1) { foreach (ARControl item in this.pageHeader.Controls) { item.Visible = false; } foreach (ARControl item in this.pageFooter.Controls) { item.Visible = false; } } if(pagenumberTemp>n+1) { foreach (ARControl item in this.pageHeader.Controls) { item.Visible = true; } foreach (ARControl item in this.pageFooter.Controls) { item.Visible = true; } } }
5. 添加detail_Format 事件,控制将所选行的所在页,未选中的行隐藏。
public void detail_Format(object sender, EventArgs e) { //控制报表的 Detail 区域控件的可见性。 //如果小于“续打的行号”,则隐藏 if (count < Total) { foreach (ARControl item in this.detail.Controls) { item.Visible = false; } } //如果大于“续打的行号”,则显示 if (count >= Total) { foreach (ARControl item in this.detail.Controls) { //可获取控件类型,如果为线则隐藏 // var temp=item.GetType(); item.Visible = true; } } }
示例程序:
您在使用产品过程中有任何疑问,可以登录葡萄城开发者社区和经验丰富的技术工程师、ActiveReports开发人员交流:了解更多。
了解ActiveReports产品更多特性:
下载产品体验产品功能: