文档章节

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

白志华
 白志华
发布于 2015/10/18 10:56
字数 678
阅读 60
收藏 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

白志华
粉丝 34
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
C# WinForm开发系列 - Crystal Report

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

长征2号
2017/09/19
0
0
编写的vs2005水晶报表程序在vs2008下正常使用的一些实现方法

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

晨曦之光
2012/05/16
121
0
VS2010水晶报表更新到服务器IIS

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

南風
2014/08/09
740
0
『水晶报表』使用 水晶报表 实现打印

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

灰大羊
2016/07/05
219
0
报表软件发展趋势

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

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

没有更多内容

加载失败,请刷新页面

加载更多

新建作业20191011121223

2.编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound,Sally shouted,"By the Great Pumpkin,what was that!" #include<stdio.h>int main(){printf("\a");......

电子197朱妍
26分钟前
3
0
家庭作业——苗钰婷

2 编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that! #include<stdio.h>int main(){......

OSC_Okruuv
47分钟前
6
0
经典系统设计面试题解析:如何设计TinyURL(一)

原文链接: https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
48分钟前
6
0
2.面向对象设计原则(7条)

开闭原则 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。 实现方法 可以通过“抽象约束、封装变化”来实...

Eappo_Geng
50分钟前
10
0
8086汇编基础 debug P命令 一步完成loop循环

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
54分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部