找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-10-30 21:47  /   查看:5933  /  回复:3
ActiveReports 7中提供了两种报表类型SectionReport和PageReport,在PageReport中提供了Table等控件可以非常方便地对报表中数据进行排序操作,不过在SectionReport中没有提供这种支持排序的控件,下面我们就来看看在SectionReport中如何实现数据的排序操作。

在SectionReport中实现数据排序,主要是借助TextBox的HyperLink属性,以及Viewer控件的HyperLink事件。

首先创建我们需要的报表,在VS中添加新项目,选择【ActiveReports 7 Section Report(code-based)】


如何在报表的设计界面添加三列数据,在三个列头的右边分别添加一个TextBox控件,并设置HyperLink属性


然后添加报表ReportStart事件的处理逻辑:
  1.     private void SectionReport1_ReportStart(object sender, EventArgs e)
  2.     {
  3.         OleDBDataSource ds = new OleDBDataSource();
  4.         ds.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=App_Data\\Reels.mdb;Persist Security Info=False";
  5.         ds.SQL = "SELECT * FROM Product order by " + Column + " " + Sort;
  6.         ((TextBox)pageHeader.Controls["txt" + Column + "Sort"]).Text = (Sort == "Asc") ? "▲" : "▼";
  7.         ((TextBox)pageHeader.Controls["txt" + Column + "Sort"]).HyperLink = Column + ":" + Sort;
  8.         this.DataSource = ds;
  9.     }
复制代码


在Form1上添加ActiveReports 7的报表浏览控件Viewer,并添加Viewer的HyperLink事件处理逻辑:
  1.     private void viewer1_HyperLink(object sender, GrapeCity.ActiveReports.Viewer.Win.HyperLinkEventArgs e)
  2.     {
  3.         SectionReport1 rpt = new SectionReport1();
  4.         rpt.Column = e.HyperLink.Split(':')[0];
  5.         rpt.Sort = (e.HyperLink.Split(':')[1] == "Asc") ? "Desc" : "Asc";
  6.         rpt.Run();
  7.         viewer1.LoadDocument(rpt.Document);
  8.     }
复制代码


运行程序,点击各列中的排序按钮:


源码下载:VS2010 + ActiveReports 7

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
zhongren66zr
银牌会员   /  发表于:2013-1-2 14:09:00
沙发
好东西 要顶啊 希望版主能加我4/7/6/7/3/1/3/3/6 虚心请教 多多交流 爱你版主  加我啦
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-1-4 17:50:00
板凳
回复 2楼zhongren66zr的帖子

zhongren66zr

抱歉,因为网络限制我们无法上QQ,你有产品相关问题,可以直接到论坛发帖,我们会在线处理。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-5-6 16:51:00
地板
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部