找回密码
 立即注册

QQ登录

只需一步,快速开始

KearneyKang 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-3-8 14:56  /   查看:5942  /  回复:6
JS Viewer 如何绑定动态数据源

AR13推出了新的报表渲染方式,使用JSViewer渲染报表。这是一种新的渲染报表的方式
下面我们就来看看 JS Viewer 如何绑定动态数据源。

1、 打开JS Viewer的报表服务文件 Startup1.cs

2、 在报表服务调用的文件里进行数据的绑定
3、 主要实现代码:
  1. public class Startup1

  2.     {

  3.         public static string EmbeddedReportsPrefix = "JSSampleone";

  4.         public void Configuration(IAppBuilder app)

  5.         {

  6.             app.UseReporting(settings =>

  7.             {

  8.                 settings.UseFileStore(new DirectoryInfo(@"D:\Demo\JsSample2\JsSample2"));

  9.                 settings.LocateDataSource = args =>

  10.                 {

  11.                                 

  12.                     DataTable dt = new DataTable();

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

  14.                     {

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

  16.                         {

  17.                         dt.Columns.Add("产品编号");

  18.                         dt.Columns.Add("产品名称");

  19.                             dt.Columns.Add("单价");

  20.                             dt.Columns.Add("库存量");

  21.                             dt.Columns.Add("产地");

  22.                             dt.Rows.Add("A001", "苹果", 10, 300, "中国");

  23.                             dt.Rows.Add("A002", "葡萄", 20, 200, "中国");

  24.                             dt.Rows.Add("A003", "香蕉", 30, 400, "中国");

  25.                             dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");

  26.                             dt.Rows.Add("A005", "荔枝", 20, 200, "中国");

  27.                             dt.Rows.Add("A006", "芒果", 30, 400, "中国");

  28.                             dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");

  29.                             dt.Rows.Add("A008", "柠檬", 210, 200, "中国");

  30.                         dt.Rows.Add("A009", "栗子", 320, 400, "中国");

  31.                             dt.Rows.Add("A010", "火龙果", 100, 300, "中国");

  32.                             dt.Rows.Add("A011", "青芒", 250, 200, "中国");

  33.                             dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");

  34.                             dt.Rows.Add("A013", "土豆", 380, 400, "中国");

  35.                         dt.Rows.Add("A014", "苹果", 110, 300, "中国");

  36.                         dt.Rows.Add("A015", "葡萄", 420, 200, "中国");

  37.                         dt.Rows.Add("A016", "香蕉", 530, 400, "中国");

  38.                             dt.Rows.Add("A017", "土豆", 380, 400, "中国");

  39.                             dt.Rows.Add("A018", "苹果", 110, 300, "中国");

  40.                             dt.Rows.Add("A019", "葡萄", 420, 200, "中国");

  41.                         dt.Rows.Add("A020", "香蕉", 530, 400, "中国");

  42.                         dt.Rows.Add("A021", "苹果", 10, 300, "中国");

  43.                             dt.Rows.Add("A022", "葡萄", 20, 200, "中国");

  44.                             dt.Rows.Add("A023", "香蕉", 30, 400, "中国");

  45.                         dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");

  46.                             dt.Rows.Add("A025", "荔枝", 20, 200, "中国");

  47.                             dt.Rows.Add("A026", "芒果", 30, 400, "中国");

  48.                         }

  49.                     }                  

  50.                     return dt;

  51.                 };



  52.             });

  53.         }

  54.    }

复制代码
4、运行结果
5、参考demo见附件


本帖子中包含更多资源

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

x

评分

参与人数 1满意度 +5 收起 理由
wengMQ + 5

查看全部评分

6 个回复

正序浏览
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-8-23 10:25:59
7#
zhengwei_cq 发表于 2021-8-16 13:56
你这个是运行时绑定的报表的数据,并不是数据集的数据。你研究一下IDataSet 对象,只有能通过sql给这个数据 ...

您这个好像没描述清楚您的问题呢?您具体遇到什么问题,建议您在求助中心另发帖子哦~
回复 使用道具 举报
zhengwei_cq
初级会员   /  发表于:2021-8-16 13:56:58
6#
你这个是运行时绑定的报表的数据,并不是数据集的数据。你研究一下IDataSet 对象,只有能通过sql给这个数据集绑定数据,而不能通过object 或dataset
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-9-4 12:19:17
5#
您好

是的,直接使用示例 JSViewer-MVC(Core)的里面的Startup 文件,添加新项里面会有此选项


回复 使用道具 举报
hexllo
金牌服务用户   /  发表于:2020-9-3 22:51:26
地板
老师,这个必须要加OwinStartup吗,我在netcore下怎么加都不行,一直没有能用的nuget(Owin)包
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-6-22 18:14:18
板凳
你好可以参考这个代码:
  1. namespace JSviewerDatasource
  2. {
  3.     public class Startup1
  4.     {
  5.         public static string EmbeddedReportsPrefix = "JSdatasource";
  6.         string ReportName = "";
  7.         public object GetReport(string P)//获取报表名称和报表参数,进行一个对应的报表名称和参数的分割
  8.         {
  9.             string reportName = P
  10.             PageReport rep = new PageReport();
  11.             string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
  12.             rep.Load(new FileInfo(@"" + path + "Reports/" + reportName));
  13.             return rep.Report;
  14.         }

  15.         public void Configuration(IAppBuilder app)
  16.         {
  17.             app.UseReporting(settings =>
  18.             {

  19.                 settings.UseCompression = true;
  20.                 settings.UseCustomStore(GetReport);//使用UseCustomStore来自定义一些需要的值  
  21. settings.UseFileStore(new DirectoryInfo(String.Format(@"{0}.\Reports", HttpRuntime.AppDomainAppPath)));               
  22. settings.LocateDataSource = args =>
  23. {
  24. DataTable dt = new DataTable();
  25. string name = ReportName;
  26. if (args.DataSet.Query.DataSourceName == "DataSource1")
  27. {

  28. if (args.DataSet.Name == "DataSet1")
  29. {
  30. dt.Columns.Add("产品编号");
  31. dt.Columns.Add("产品名称");
  32. dt.Columns.Add("单价");
  33. dt.Columns.Add("库存量");
  34. dt.Columns.Add("产地");
  35. dt.Rows.Add("A001", "苹果", 10, 300, "中国");
  36. dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
  37. dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
  38. dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
  39. dt.Rows.Add("A005", "荔枝", 20, 200, "中国");

  40. }

  41. }
  42. return dt;
  43. };


  44.             });

  45.         }


  46.     }
  47. }
复制代码


回复 使用道具 举报
qcsoft
金牌服务用户   /  发表于:2020-6-19 18:44:24
沙发
我同时使用了UseCustomStore和LocateDataSource,发现LocateDataSource没有被调用到。

UseCustomStore的情形怎么动态提供数据源呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部