找回密码
 立即注册

QQ登录

只需一步,快速开始

KearneyKang 讲师达人认证 悬赏达人认证

超级版主

199

主题

6505

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10804

圣诞拼拼乐微信认证勋章讲师达人悬赏达人元老葡萄

KearneyKang 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-6-25 15:50  /   查看:6318  /  回复:0
本帖最后由 KearneyKang 于 2020-12-25 11:34 编辑

由于AR 13AR12在报表数据源数据集引用方面的修改,导致以前旧的在H5方式下获取报表参数值的方式出现一个异常错误:超出索引值
可是由于存在这样一个业务场景,就是有时使用参数报表,数据源使用的是动态绑定数据源,然后就存在需要在后台代码获取报表的参数,来进行一个参数的筛选,然后最后进行一个数据的绑定。
V13的动态数据源的绑定代码:
V13之前的旧代码(V13已经弃用):
  1.   private void DataSource2(object sender, LocateDataSourceEventArgs args)

  2.         {

  3.             if(args.DataSourceName== "DataSource1")

  4.             {

  5.                 if(args.DataSetName== "DataSet1")

  6.                 {                  
  7. <span style="color: rgb(0, 0, 0); font-family: Verdana, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: rgb(255, 255, 255);"> string a = args.Report.Parameters[0].CurrentValue.ToString();//获取报表参数</span>
  8.                     args.Data = returndata();

  9.                 }

  10.             }

  11.         }
复制代码


V13最新的实现代码:
  1. private void DataSource1(object sender, LocateDataSourceEventArgs args)

  2.         {



  3.             if (args.DataSet.Query.DataSourceName == "DataSource1")

  4.             {

  5.                 if (args.DataSet.Name == "DataSet1")

  6.                 {

  7.                     var name = args.Parameters[0].Value.ToString(); //获取报表参数              

  8.                     args.Data = returndata1();

  9.                 }


  10.             }

  11.         }
复制代码

上面就是V13最新的动态数据源绑定的方法,然后需要在项目中添加这两个V13的引用
GrapeCity.ActiveReports.Core.Rdl
GrapeCity.ActiveReports.Core.Rendering

只有这样才可以该方法才可以正常的运行。
下面就来说说V13如何获取参数值
获取参数值的代码还是如上获取参数值的代码:

  1. var name = args.Parameters[0].Value.ToString(); //获取报表参数   
复制代码

但是在原来V12的项目升级到V13之后,这种方式就会报错。这是由于V13和V12数据绑定方式引用的改变导致的。
具体的解决办法就是:
打开你绑定的报表文件,然后给你的报表的文件的参数在数据集里面进行一个对应的参数值的映射,就可以了。

本帖子中包含更多资源

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

x

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部