wxg0804 发表于 2016-8-29 19:26:07

在RDL报表中包含多个Table控件,运行时绑定数据集,如何将数据集对应到Table控件?

本帖最后由 Lenka.Guo 于 2016-8-30 09:36 编辑

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

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

Lenka.Guo 发表于 2016-8-30 09:21:15

这是一个好问题~~~~~~~~~~~~~~
其实是同样的道理,因为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);

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 对应的字段值(详细见本地示例代码 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]
查看完整版本: 在RDL报表中包含多个Table控件,运行时绑定数据集,如何将数据集对应到Table控件?