在RDL报表中包含多个Table控件,运行时绑定数据集,如何将数据集对应到Table控件?
本帖最后由 Lenka.Guo 于 2016-8-30 09:36 编辑在RDL报表中如果只有一个Table,运行时绑定数据集很简单,只要使用如下代码:
rpt.Report.DataSources.Add(dataSource);
rpt.Report.DataSets.Add(dataSet);
报表就会自动将数据集绑定到Table上。
但如果有多个Table,多个数据集,如何正确的一一绑定到一起?
这是一个好问题~~~~~~~~~~~~~~
其实是同样的道理,因为RDL报表支持多数据源的绑定,且不同的数据源或数据集主要是依靠 名称来区分的,如果有多个DataSet,使用同样的代码添加即可:
DataSource dataSource = new DataSource();
dataSource.Name = "DataSource1";
dataSource.ConnectionProperties.DataProvider = "DATASET";
dataSource.ConnectionProperties.ConnectString = "";
//Create DataSet with specified query and load database fields to the DataSet
DataSet dataSet = new DataSet();
Query query = new Query();
dataSet.Name = "DataSet1";
query.DataSourceName = "DataSource1";
query.CommandType = QueryCommandType.Text;
query.CommandText = "";
dataSet.Query = query;
//获取主表字段
Field field = new Field("公司名称", "C_O.公司名称", null);
dataSet.Fields.Add(field);
//create report definition with specified DataSet and DataSource
report.Report.DataSources.Add(dataSource);
report.Report.DataSets.Add(dataSet);
DataSet dataSet1 = new DataSet();
Query query1 = new Query();
dataSet1.Name = "DataSet2";
query1.DataSourceName = "DataSource1";
query1.CommandType = QueryCommandType.Text;
query1.CommandText = "";
dataSet1.Query = query1;
//获取主表字段
Field field1 = new Field("公司名称1", "公司名称2", null);
dataSet1.Fields.Add(field);
report.Report.DataSets.Add(dataSet1);
如何添加多个数据集我其实是知道的,我是不理解这些记录集是怎么绑定到多个Table控件上的,按顺序吗?因为代码里并没有出现Table对象,所以还是不明白是怎么一一对应绑定的。 本帖最后由 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 对应的字段值(详细见本地示例代码 CreateReportC:\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 绑定数据源, 必须预先知道 字段名称,然后根据字段名称在报表中引用和与 实际的数据绑定。
页:
[1]