文档章节

完美解决水晶报表的翻页问题

白志华
 白志华
发布于 2015/10/18 10:56
字数 678
阅读 4
收藏 0
点赞 0
评论 0

      在维护YH过程中遇到了这样一个错误:报表查询到的数据有4页,默认显示第一页,点击下一页,显示正常,再点击下一页,本来应该显示第三页的,结果还是显示第二页,点击末页和首页可以正常显示,输入页码,点击跳转按钮也可以正常显示。很奇怪的问题,但是不得不解决,客户那边有要求嘛。功夫不负有心人,历经“千辛万苦”终于解决了。

       对于伸手党来说,解决方案当然是最想先看到的,那就先说说我的解决方案吧:

【解决方案】

源代码: 

protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Admin"] == null)
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('您的会话时间已过期,请重新登陆!');</script>");
                Response.Write("<script language=javascript>window.top.location.href='../Login.aspx'</script>");
                return;
            }
	   //查询报表并显示(按时间段查询)
	   CheckBetweenTime();
        }

修改后的代码:

protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Admin"] == null)
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('您的会话时间已过期,请重新登陆!');</script>");
                Response.Write("<script language=javascript>window.top.location.href='../Login.aspx'</script>");
                return;
            }
            //查询报表并显示(按时间段查询)
              //CheckBetweenTime();
        }

添加代码:

protected void CrystalReportViewer1_Navigate(object sender, EventArgs e)
        {
            //查询报表并显示(按时间段查询)
               CheckBetweenTime();          
        }

 

源码中修改:

<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" DisplayGroupTree="false"  OnNavigate="CrystalReportViewer1_Navigate"/>


再测试,OK了。

 

【解 析】MSDN上查得点击翻页会触发Navigate 事件。CrystalReportViewer 的事件成员: http://msdn.microsoft.com/zh-cn/library/ms227097(v=VS.90).aspx

所以我们只要在CrystalReportViewer 的 Navigate 事件中重新绑定数据源,这样可以从根本上解决问题。

 

网上有说将Page_Load里的数据源绑定操作,写到Page_Init事件中,这也是一种解决方案,但是这个解决方案有局限性:因为我的数据绑定是要通过界面控件数据获取的,而Page_Init事件是页面初始化的事件,这时的控件都没有赋值,所以条件当然就错了,条件错了结果也就错了。而Navigate 事件则是在Page_Init和Page_Load事件结束后,才进行的,条件可以正常获得,然后再进行绑定数据源即可。

注意:CrystalReportViewer 所有的翻页操作都会触发Navigate 事件。我们可以调用CrystalReportViewer 的单独翻页方法:

CrystalReportViewer1.ShowFirstPage();     //首页
     CrystalReportViewer1.ShowLastPage();      //末页
     CrystalReportViewer1.ShowNextPage();      //下一页
     CrystalReportViewer1.ShowPreviousPage();  //上一页
     CrystalReportViewer1.ShowNthPage(N);      //跳转到第 N 页


有了这些方法,只要对这些方法进行重写再结合着Navigate 事件即可实现想要的功能了。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/7199847

共有 人打赏支持
白志华
粉丝 29
博文 260
码字总数 57524
作品 0
长沙
程序员
C# WinForm开发系列 - Crystal Report

水晶报表(Crystal Report)是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。 在VS.Net平台做过报表开发的程序员,一定...

长征2号 ⋅ 2017/09/19 ⋅ 0

编写的vs2005水晶报表程序在vs2008下正常使用的一些实现方法

转载地址:http://www.codesky.net/article/doc/201004/2010041706709.htm 一、没有安装部署好水晶报表;(vs2008安装后,不等于安装了vs2008水晶报表) 二、源程序中:VS2008和v2005的水晶报表...

晨曦之光 ⋅ 2012/05/16 ⋅ 0

VS2010水晶报表更新到服务器IIS

前提介绍:服务器上网站IIS发布,服务器上安装了VS2008(亲,自带水晶报表的哟)。服务器版本2003。本地用VS2010采用push模式做的报表。 从开始到结束,尼玛,不知道牺牲了咱多少脑细胞。好吧...

南風 ⋅ 2014/08/09 ⋅ 0

『水晶报表』使用 水晶报表 实现打印

在我们开发各种工具软件的时候,我们不可避免的会遇到打印的问题。而使用.NET开发打印功能,水晶报表或许会是一个十分不象错的选择! 一般步骤: 准备好想要打印的数据源; 制作用于规定打印...

灰大羊 ⋅ 2016/07/05 ⋅ 0

报表软件发展趋势

任何一个软件行业的发展,都是和它所服务的行业的发展相对应的。从最初始的信息化把纸张搬的电脑需求,到现在用户对信息在任何时间任何地点都能访问的预期,报表软件也在功能和性能方面取得了...

敏捷商业智能 ⋅ 2010/07/08 ⋅ 9

解析和生成Excel报表方法汇总::.NET发现之旅(七)

昨天在医院检查身体时,一个朋友打过来电话,咨询EXCEL报表开发都有哪些方法,他们要上一个有200多个不同格式Excel报表的项目,虽然在医院做全身检查中,我还是给他提供了几点建议。在这里我...

terryli ⋅ 2010/08/12 ⋅ 0

禅道开源版 7.2.5 版本暨专业版 4.7.stable 版本发布

禅道项目管理软件开源版7.2.5版本于8月7日发布。 该版本主要修复Bug。 修改记录 修复的BUG: 711 项目→需求→新增需求可以选择和项目没有关联的产品 714 用例的模块二、三级模块点击后不会加...

炒蚕豆吃蹦豆 ⋅ 2015/08/10 ⋅ 4

如何在水晶报表( Crystal Reports)中插入条形码(附视频)

水晶报表( Crystal Reports)是当今商业市场上最流行的报表环境之一。跨国公司利用水晶报表( Crystal Reports)来生成多种数据源的报表,为业务分析、战略规划和库存控制等方面提供了强大的...

flyingsnail ⋅ 2014/04/30 ⋅ 0

水晶报表log4net导致vs下程序重新编译后不能运行

程序语言c# 开发工具vs2005 安装水晶报表后 ,程序可以 正常编译,但无法正常运行,跟踪错误发现这样的错误提示“The type initializer for TrendMicro.TMCM.Utilities.Reporting.WFReportin...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

IIS访问共享文件详解

原文:IIS访问共享文件详解 前言 公司同事做了一个报表系统,需要做集群部署,本来是一件挺容易的事,但是部署过程中却遇到啦种种蛋疼问题。 问题1、我们的报表使用的是微软的水晶报表,需要上...

杰克.陈 ⋅ 2017/12/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 22分钟前 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 45分钟前 ⋅ 0

用户登录信息-钉子效果(基于jquery2.0)

本js效果使用jquery2.0,清晰的分解用户登录信息的(钉子效果),该效果直接用在作者网站(www.phpkhbd.com)上。 里面的难点有:定时器,延时。 大致效果如下: 一开始: 鼠标放上去的时候:...

宁哥实战课堂 ⋅ 46分钟前 ⋅ 0

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 57分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 今天 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 今天 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 今天 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 今天 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 今天 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部