Activereports使用自定义数据创建PageReport

时间:2015-06-04 02:42:52

标签: c# activereports

我想根据自定义类创建页面报告,而我的PageReport包含一个表格。

比如说我有一个Customer数据类,如下所示

Class CustomerData 
{
  string name;
  string id;
  string address;
}

我创建了一个List<CustomerData> CustomerList,其中包含我的所有客户数据。我想将此数据指定为Pagereport的数据源。我知道在SectionReport中我们可以这样做。但是如何将我的信息列表分配给PageReport。可以有人帮助我

最终我期待输出如下

----------------------------------------------
|Name       |      ID        |     Address    |
----------------------------------------------
|Name1      |      ID1       |     Address1   |
----------------------------------------------
|Name2      |      ID2       |     Address2   |
----------------------------------------------
|Name3      |      ID3       |     Address3   |
----------------------------------------------

更新

ComponentIdInfo是字段

之一

enter image description here

2 个答案:

答案 0 :(得分:1)

这样的事情:

        this._rptPath = new FileInfo(@"..\..\PageReport1.rdlx");
        this._definition = new PageReport(this._rptPath);
        this._definition.ConfigurationProvider = new GrapeCity.ActiveReports.Configuration.DefaultConfigurationProvider();

        this._runtime = new PageDocument(this._definition);
        this._runtime.LocateDataSource += this.runtime_LocateDataSource;
        this.YourViewer.ReportViewer.LoadDocument(this._runtime);

runtime_LocateDataSource事件中,添加以下代码:

private void runtime_LocateDataSource(object sender, LocateDataSourceEventArgs args)
    {
        object data = null;
        string dataSetName = args.DataSetName;
        string dataSourceName = args.DataSourceName;

        if (StringsAreEqual("DataSource1", dataSourceName))
        {
            if (StringsAreEqual("DataSet1", dataSetName))
            {
                data = CustomerListDataTable;
            }
        }

        args.Data = data;
    }

    private static bool StringsAreEqual(string str1, string str2)
    {
        return string.Compare(str1, str2, true, CultureInfo.InvariantCulture) == 0;
    }

请注意,您必须在页面报告中创建一个名为DataSource的{​​{1}}和DataSource1 DataSet。并将DataSet1的列名称与DataSet1Customer's匹配。

要转到public properties,请右键点击Add DataSource(灰色区域)外部,然后选择page report并在property中查找DataSource窗口。

如何添加DataSource / DataSet

  • 在“报表资源管理器”中,右键单击“数据源”节点,然后选择“添加数据源”选项。
  • 在显示的“报告数据源”对话框中,选择“常规”页面,然后在“名称”字段中输入名称,如DataSource1。
  • 右键单击数据源节点,然后选择“添加数据集”选项。
  • 在出现的“数据集”对话框中,选择“常规”页面,然后输入数据集的名称作为DataSet1。此名称显示为报表资源管理器中数据源图标的子节点。
  • 转到字段标签,然后在那里输入您的DataSet的字段(列)

请注意,如果找不到property,请转到Report Explorer Visual Studios菜单,然后转到View

答案 1 :(得分:0)

您可以使用RDL / Page报告中的Object DataProvider实现您要实现的目标。有关详细信息和代码示例,请查看此link。请注意&#34;未绑定数据源&#34;下的对象提供程序主题;部分。