找回密码
 立即注册

QQ登录

只需一步,快速开始

wxg0804

注册会员

4

主题

14

帖子

54

积分

注册会员

积分
54
最新发帖
wxg0804
注册会员   /  发表于:2016-8-29 19:26  /   查看:4977  /  回复:3
本帖最后由 Lenka.Guo 于 2016-8-30 09:36 编辑

在RDL报表中如果只有一个Table,运行时绑定数据集很简单,只要使用如下代码:
            rpt.Report.DataSources.Add(dataSource);
            rpt.Report.DataSets.Add(dataSet);

报表就会自动将数据集绑定到Table上。
但如果有多个Table,多个数据集,如何正确的一一绑定到一起?

3 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-8-30 09:21:15
沙发
这是一个好问题~~~~~~~~~~~~~~
其实是同样的道理,因为RDL报表支持多数据源的绑定,且不同的数据源或数据集主要是依靠 名称来区分的,如果有多个DataSet,使用同样的代码添加即可:


  1. DataSource dataSource = new DataSource();
  2.             dataSource.Name = "DataSource1";
  3.             dataSource.ConnectionProperties.DataProvider = "DATASET";
  4.             dataSource.ConnectionProperties.ConnectString = "";

  5.             //Create DataSet with specified query and load database fields to the DataSet
  6.             DataSet dataSet = new DataSet();
  7.             Query query = new Query();
  8.             dataSet.Name = "DataSet1";
  9.             query.DataSourceName = "DataSource1";
  10.             query.CommandType = QueryCommandType.Text;
  11.             query.CommandText = "";
  12.             dataSet.Query = query;
  13.             //获取主表字段
  14.             Field field = new Field("公司名称", "C_O.公司名称", null);
  15.                 dataSet.Fields.Add(field);
  16.               
  17.             //create report definition with specified DataSet and DataSource
  18.             report.Report.DataSources.Add(dataSource);
  19.             
  20.             report.Report.DataSets.Add(dataSet);

  21.              DataSet dataSet1 = new DataSet();
  22.             Query query1 = new Query();
  23.             dataSet1.Name = "DataSet2";
  24.             query1.DataSourceName = "DataSource1";
  25.             query1.CommandType = QueryCommandType.Text;
  26.             query1.CommandText = "";
  27.             dataSet1.Query = query1;
  28.             //获取主表字段
  29.             Field field1 = new Field("公司名称1", "公司名称2", null);
  30.                 dataSet1.Fields.Add(field);
  31.              report.Report.DataSets.Add(dataSet1);
复制代码


回复 使用道具 举报
wxg0804
注册会员   /  发表于:2016-8-30 11:24:59
板凳
如何添加多个数据集我其实是知道的,我是不理解这些记录集是怎么绑定到多个Table控件上的,按顺序吗?因为代码里并没有出现Table对象,所以还是不明白是怎么一一对应绑定的。
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-8-30 11:34:53
地板
本帖最后由 Lenka.Guo 于 2016-8-30 11:40 编辑
wxg0804 发表于 2016-8-30 11:24
如何添加多个数据集我其实是知道的,我是不理解这些记录集是怎么绑定到多个Table控件上的,按顺序吗?因为 ...

主要分两种情况:

1. 在设计时, 手动添加数据集和 数据集中的字段;然后在运行时,返回DataTable,这个DataTable中的字段名称,与设计时添加的字段名保持一致。比如:
RDL 报表中有三个表格, Table1;Table2,Table3; 分别对应的是DataSet1,DataSet2, DataSet3;
在设计时,添加数据集DataSet1,并手动添加DataSet1的字段名称,字段1,字段2,字段3;
在代码中通过SQL 查询或其他方式返回DataTable,这个DataTable也包含的字段名称也必须为 字段1,字段2,字段3

这个参考运行时绑定数据源 博客  http://blog.gcpowertools.com.cn/post/2014/08/01/ActiveReports_DataSource_RunTime.aspx



2. 在运行时,通过后台代码指定表格中的TextBox 对应的字段值(详细见本地示例代码 CreateReport  C:\Users\lenkaguo\Documents\GrapeCity Samples\ActiveReports 10\Page Reports And RDL Reports\API\CreateReport)

如:
  String[] textBoxValues = new String[] { "Title", "Year Released", "MPAA", "=Fields!Title.Value", "=Fields!YearReleased.Value", "=Fields!MPAA.Value" };
String[] fieldsList = new String[] { "MoviedID", "Title", "YearReleased", "MPAA" };


总之,如何实现动态为Table 绑定数据源, 必须预先知道 字段名称,然后根据字段名称在报表中引用和与 实际的数据绑定。


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