我想根据自定义类创建页面报告,而我的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是字段
之一
答案 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
的列名称与DataSet1
类Customer's
匹配。
要转到public properties
,请右键点击Add DataSource
(灰色区域)外部,然后选择page report
并在property
中查找DataSource
窗口。
如何添加DataSource / DataSet
请注意,如果找不到property
,请转到Report Explorer
Visual Studios
菜单,然后转到View
。
答案 1 :(得分:0)
您可以使用RDL / Page报告中的Object DataProvider实现您要实现的目标。有关详细信息和代码示例,请查看此link。请注意&#34;未绑定数据源&#34;下的对象提供程序主题;部分。