【发布时间】:2014-01-14 13:06:12
【问题描述】:
我想为我的软件添加报告运行时功能,并决定使用 RDL 和本地报告查看器 (WinForms)
我已经阅读了几篇很好的 HOW TO(MSDN 和 gotreportviewer)和文章,并且我成功地完成了以下工作:
使用 XSD (http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition) 转换最新方案,并在运行时生成一个 rdl 文件,该文件显示在 repot 查看器中。
问题是因为我没有使用服务器并且在本地模式下没有任何实际连接,因为数据集是在运行时交付的,所以数据不是持久的。
我想以这样一种方式嵌入数据,即唯一需要的是 RDL(实际上它是一个 RDLC,因为它处于本地模式)。
我发现有一种XML嵌入方式:
[来自:StockChartsRS2008R2.rdl]
…
<DataSet Name="AWDataSet"> <Query> <DataSourceName>AdventureWorksOffline</DataSourceName> <CommandText><Query> <ElementPath>Root /Stock {@High (Float), @Low (Float), @Close (Float), @Open(Float), @StockPriceDate(Date)} </ElementPath> <XmlData> <Root> <Stock High="30.4113833868661" Low="29.9705661418443" Close="30.2016959908158" Open="30.2323120165209" StockPriceDate="2008-01-13T00:00:00"/>
...
问题是,当我使用本地报表查看器时,我需要从嵌入的数据重新生成数据集——我不知道该怎么做:
_reportViewer.LocalReport.DataSources.Add(new ReportDataSource(???))
如果成功,它将向我保证无论是使用服务器模式还是客户端,我的数据都将始终可用并显示报告
还有比嵌入 XML 更好的方法来持久化数据吗?
谢谢,莫什。
【问题讨论】:
标签: c# xml reporting-services runtime rdl