找回密码
 立即注册

QQ登录

只需一步,快速开始

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

超级版主

299

主题

7874

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13131

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

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-10-18 15:18  /   查看:7190  /  回复:7
本帖最后由 dof 于 2016-10-18 15:27 编辑

主要核心使用到了LocateDataSource事件,并根据数据集的名称决定加载什么数据,核心代码:

ASP.NET WebViewer 版本源码下载:

WinForms Viewer 版本源码下载:


  1.     public partial class Index : System.Web.UI.Page
  2.     {
  3.         protected void Page_Load(object sender, EventArgs e)
  4.         {
  5.             if (IsPostBack)
  6.             {
  7.                 return;
  8.             }

  9.             GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("RdlReport1.rdlx")));
  10.             report.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Document_LocateDataSource);

  11.             WebViewer1.Report = report;            
  12.         }

  13.         void Document_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  14.         {
  15.             if (args.DataSetName == "ds_Category")
  16.             {
  17.                 List<Category> list_Category = new List<Category>();
  18.                 list_Category.Add(new Category() { CategoryID = "1", Name = "类别1" });
  19.                 list_Category.Add(new Category() { CategoryID = "2", Name = "类别2" });
  20.                 list_Category.Add(new Category() { CategoryID = "3", Name = "类别3" });
  21.                 list_Category.Add(new Category() { CategoryID = "4", Name = "类别4" });
  22.                 args.Data = list_Category;
  23.             }else if(args.DataSetName == "ds_Product")
  24.             {
  25.                 string p1 = args.Report.Parameters[0].CurrentValue.ToString();
  26.                 List<Product> list_Product = new List<Product>();

  27.                 list_Product.Add(new Product() { CategoryID = "1", ProductID = "1", Name = "产品1", Price = 20 });
  28.                 list_Product.Add(new Product() { CategoryID = "1", ProductID = "2", Name = "产品2", Price = 30 });
  29.                 list_Product.Add(new Product() { CategoryID = "1", ProductID = "3", Name = "产品3", Price = 23 });
  30.                 list_Product.Add(new Product() { CategoryID = "1", ProductID = "4", Name = "产品4", Price = 28 });

  31.                 list_Product.Add(new Product() { CategoryID = "2", ProductID = "5", Name = "产品5", Price = 20 });
  32.                 list_Product.Add(new Product() { CategoryID = "2", ProductID = "6", Name = "产品6", Price = 30 });
  33.                 list_Product.Add(new Product() { CategoryID = "2", ProductID = "7", Name = "产品7", Price = 23 });
  34.                 list_Product.Add(new Product() { CategoryID = "2", ProductID = "8", Name = "产品8", Price = 28 });

  35.                 list_Product.Add(new Product() { CategoryID = "3", ProductID = "9", Name = "产品9", Price = 20 });
  36.                 list_Product.Add(new Product() { CategoryID = "3", ProductID = "10", Name = "产品10", Price = 30 });
  37.                 list_Product.Add(new Product() { CategoryID = "3", ProductID = "11", Name = "产品11", Price = 23 });
  38.                 list_Product.Add(new Product() { CategoryID = "3", ProductID = "12", Name = "产品12", Price = 28 });

  39.                 list_Product.Add(new Product() { CategoryID = "4", ProductID = "13", Name = "产品13", Price = 20 });
  40.                 list_Product.Add(new Product() { CategoryID = "4", ProductID = "14", Name = "产品14", Price = 30 });
  41.                 list_Product.Add(new Product() { CategoryID = "4", ProductID = "15", Name = "产品15", Price = 23 });
  42.                 list_Product.Add(new Product() { CategoryID = "4", ProductID = "16", Name = "产品16", Price = 28 });

  43.                 args.Data = list_Product.Where<Product>(p => p.CategoryID == p1);
  44.             }
  45.             
  46.         }

  47.     }

  48.     public class Category
  49.     {
  50.         public string CategoryID { get; set; }
  51.         public string Name { get; set; }
  52.     }
  53.     public class Product
  54.     {
  55.         public string CategoryID { get; set; }
  56.         public string ProductID{get;set;}
  57.         public string Name{get;set;}
  58.         public float Price{get;set;}
  59.     }
复制代码




本帖子中包含更多资源

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

x

评分

参与人数 1满意度 +5 收起 理由
dongfeicnlc + 5 很给力!

查看全部评分

7 个回复

倒序浏览
ziliuxing2008
注册会员   /  发表于:2016-10-31 10:19:23
沙发
有html5运行时数据源绑定的demo吗?
回复 使用道具 举报
ziliuxing2008
注册会员   /  发表于:2016-10-31 10:19:28
板凳
有html5运行时数据源绑定的demo吗?
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-10-31 10:45:33
地板
ziliuxing2008 发表于 2016-10-31 10:19
有html5运行时数据源绑定的demo吗?

有的,请参考博客:http://blog.gcpowertools.com.cn/post/html5DataSourceRunTime.aspx
回复 使用道具 举报
anthony1119
初级会员   /  发表于:2017-8-21 15:28:58
5#
出现如下错误,请问如何解决?

本帖子中包含更多资源

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

x
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2017-8-24 09:43:21
6#
您好,您这是数据源的绑定有问题。我给您一个关于html5运行时数据源绑定的demo您参考下!首先Htm5绑定动态数据源,需要自己重新定义Web服务,或者自己重新定义一个Web服务,然后URL绑定的时候绑定新定义的Web服务。
附件中的demo的Webform1.aspx是用的Html5动态绑定数据源

本帖子中包含更多资源

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

x
回复 使用道具 举报
tanqingdong
注册会员   /  发表于:2019-8-16 11:41:00
7#
你好,前后端分离,用户在线编辑模板,保存模板,然后通过后台接口提供的所有数据,用户选择模板,预览、打印,有DEMO吗?
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-8-19 09:51:03
8#
您好你说的用户在线编辑模板,你的项目 是B/S 项目还是C/S项目。关于动态数据源绑定你可以参考这个这一系列的demo:https://gcdn.grapecity.com.cn/fo ... &extra=page%3D1
集成编辑器的话你可以看着两个博客:https://gcdn.grapecity.com.cn/fo ... &extra=page%3D2
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D3
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部