我使用Visual Studio 2015年和Entity Framework 6.它需要有使用WindowsFormsHost
一些SSRS 当地报告Reports.xaml
视图(用户控件)内运行构建MVVM光WPF应用程序控制:定义SSRS报告中的数据集和DataSource动态
<WindowsFormsHost x:Name="WindowsFormsHost">
<rv:ReportViewer x:Name="ReportViewer" />
</WindowsFormsHost>
继this MSDN article的说明,我已经创建了一个嵌入的数据源和数据集的报告。但是,现在应用需要有一个ComboBox
的报告名称,以让用户选择要在ReportViewer
控件中显示的报告。
这是我想要做什么:
- 有一堆RDLC报告文件,每个文件相应的列名和布局信息
- 能够切换数据集在代码中调用不同的存储过程通过实体框架
我试图手动从RDLC文件中删除整个DataSources
和DataSets
标签,但那个吹起来和Visual Studio回来了无效的XML错误。
是否有可能在XML中没有嵌入数据集/数据源的报告?那么RDLC XML将提供布局,数据将来自代码隐藏?
这里就是我试图在我的Reports.xaml.cs
代码隐藏从MSDN文章,但它使用嵌入数据集和数据源:
public MainWindow()
{
InitializeComponent();
Messenger.Default.Register<string>(this, "RunReport", RunReport);
}
private void RunReport(string reportName)
{
Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 =
new Microsoft.Reporting.WinForms.ReportDataSource();
AdventureWorks2008R2DataSet dataset = new AdventureWorks2008R2DataSet();
dataset.BeginInit();
//Name of the report dataset in our .RDLC file
reportDataSource1.Name = "DataSet1";
reportDataSource1.Value = dataset.SalesOrderDetail;
this._reportViewer.LocalReport.DataSources.Add(reportDataSource1);
this._reportViewer.LocalReport.ReportEmbeddedResource =
"<VSProjectName>.Report1.rdlc";
dataset.EndInit();
//fill data into adventureWorksDataSet
AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter salesOrderDetailTableAdapter =
new AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter();
salesOrderDetailTableAdapter.ClearBeforeFill = true;
salesOrderDetailTableAdapter.Fill(dataset.SalesOrderDetail);
_reportViewer.RefreshReport();
}