找回密码
 立即注册

QQ登录

只需一步,快速开始

hbtx

论坛元老

21

主题

61

帖子

1万

积分

论坛元老

积分
11127

活字格认证

hbtx
论坛元老   /  发表于:2013-7-5 10:42  /   查看:5541  /  回复:3
如题,PageReport中,无论是DataSet数据源还是其它,当查询到的数据集为空时会报“错误:发生一个意外错误。更多信息:‘Invalid cell 参数名 :cell ’ ” 或者是“错误:发生一个意外错误。更多信息:‘Invalid row参数名 :row’ ”  之类的错误,用户体验效果很不好。请问如何在数据集为空时,自动跳转到一个有提示查询数据集为空信息的报表上去?

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-5 11:58:00
沙发
回复 1楼hbtx的帖子

hbtx 你好

我模拟你的使用方式做了一个Demo,在后台代码中的 LocateDataSource 事件中传递数据,如果传递一个 null 作为数据源此时会有错误提示;如果传递的数据源只是没有记录而不是null,此时不会有错误提示
  1.     protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.         GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("PageReport1.rdlx")));
  4.         report.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Document_LocateDataSource);
  5.         WebViewer1.Report = report;
  6.     }

  7.     void Document_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  8.     {
  9.         // 传递一个每一数据的空表作为数据源,此时不会有任何错误提示信息
  10.         args.Data = new System.Data.DataTable();

  11.         //// 传递 null 作为数据源,此时会出现错误提示信息
  12.         //args.Data = null;
  13.     }
复制代码



除此,你还可以设置Table控件的NoRows属性,以提示该报表没有数据

如果你遇到的情况与附件Demo不同,请将能够重现你问题的测试工程发给我就行调试,以加快问题的处理速度。


本帖子中包含更多资源

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

x
回复 使用道具 举报
hbtx
论坛元老   /  发表于:2013-7-5 16:48:00
板凳
不知道为什么,用您给的例子确实没有报错,但我的做的基本上方法是一样的,唯一不同就是我的数据源为Oracle。目前我也无解了,不知道问题是出在哪里。如下两张图,参数面板中,把中心设为1时,有数据,所以不报错,并且正常显示,把中心设为4时,就报错了(此参数我是没有设置默认值和可选值的)中心参数是数值型的,并且我很清楚,值为0,1,2,3时查询结果集有数据,其它无数据。并且我的整个项目中全都是这样,只要查询结果集没有数据行,就会报错,因此我以为AR7对无数据时需要做特别处理,才提此一问的。
因为项目使用Oracle数据源,无法把我的这张模板在其它地方运行,所以就不上传了。

本帖子中包含更多资源

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

x
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-5 17:10:00
地板
回复 3楼hbtx的帖子

这是我的测试工程,你看和你的用法有什么不一样,修改之后发给我,我再看看什么原因

同时,你可以创建一个 Access 数据库进行测试,以判断是不是数据库原因照成的


本帖子中包含更多资源

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

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部