找回密码
 立即注册

QQ登录

只需一步,快速开始

lsp

金牌服务用户

7

主题

16

帖子

4267

积分

金牌服务用户

积分
4267

活字格认证

lsp
金牌服务用户   /  发表于:2015-7-24 09:58  /   查看:4882  /  回复:7
帮助文档上显示在报表的脚本中调用C#代码,但没有找个一个比较完整的例子。有没有完整的例子提供一个学习一下。

我需要在钻取报表下一级报表加载之前更新一些数据源的内容。需要这样的功能。

7 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-7-24 11:19:00
沙发
您好,
经过电话沟通,需求为子报表拿到接受到的数据,引起一个触发的事件,在这个事件中可以完成其它的功能。
回复 使用道具 举报
lsp
金牌服务用户   /  发表于:2015-7-24 11:29:00
板凳
对,我的程序要实现的逻辑是:
报表A点击一个单元格打开报表B,报表B接收到A的全部参数和点击单元格的数据信息,报表B根据这些信息请求服务器获取相关统计数据后展示。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-7-24 13:58:00
地板
您好,
这边实现的思路是:
1.将报表A的信息通过参数的方式传给报表B


2.报表B在加载数据时,获取收到的参数
  1.         protected void WebViewer1_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  2.         {
  3.             string connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", Server.MapPath("/Data/NWind_CHS.mdb"));
  4.             Access dl = new Access(connStr);
  5.             if (args.DataSourceName == "SubDetail" && args.DataSetName == "SubDetailSet1")
  6.             {
  7.                 /**
  8.                  * 可以做任何在子报表加载数据前的操作
  9.                  * */
  10.                 String Id = args.Report.Parameters[0].CurrentValue.ToString();
  11.                 string productSql = string.Format("select 产品.产品名称, 产品.单位数量, 订单明细.单价, 订单明细.数量, 订单明细.折扣 from 订单明细 inner join 产品 on 订单明细.产品ID = 产品.产品ID where 订单ID = {0}", Id);
  12.                 args.Data = dl.ExecuteDataset(productSql);
  13.             }
  14.             else
  15.             {
  16.                 string productSql = string.Format("select 订单.* from 订单");
  17.                 args.Data = dl.ExecuteDataset(productSql);
  18.             }

  19.         }
复制代码






希望能够帮助到您。

本帖子中包含更多资源

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

x
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-7-24 17:17:00
5#
您好,
例子程序修改为winforms。


本帖子中包含更多资源

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

x
回复 使用道具 举报
lsp
金牌服务用户   /  发表于:2015-7-28 17:25:00
6#
追问一个问题,在LocateDataSource中怎么获取当前打开报表的文件名称?
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-7-28 17:40:00
7#
您好,
非常抱歉,目前没有提供打开报表名称的方法。
现在采用的方式是用过DataSourceName和DataSetName来确定唯一的一个数据源。
  1. args.DataSourceName == "SubDetail" && args.DataSetName == "SubDetailSet1"
复制代码

希望能够帮助到您。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-7 17:42:00
8#
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部