gpt4 book ai didi

c# - 动态定义SSRS报表的DataSet和DataSource

转载 作者:行者123 更新时间:2023-11-30 17:37:26 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2015 和 Entity Framework 6 构建一个 MVVM Light WPF 应用程序。它需要在 Reports.xaml View 中运行一些 SSRS local 报告(用户控件)使用 WindowsFormsHost 控件:

<WindowsFormsHost x:Name="WindowsFormsHost">
<rv:ReportViewer x:Name="ReportViewer" />
</WindowsFormsHost>

按照 this MSDN article 中的说明进行操作,我创建了一个包含嵌入式数据源和数据集的报告。但是,现在该应用程序需要一个包含报表名称的 ComboBox,以便用户选择要在 ReportViewer 控件中显示的报表。

这是我想做的:

  1. 有一堆 RDLC 报告文件,每个文件都有适当的列名和布局信息
  2. 能够在代码中切换数据集以通过 Entity Framework 调用不同的存储过程

我已经尝试从 RDLC 文件中手动删除整个 DataSourcesDataSets 标记,但这会破坏它并且 Visual Studio 会返回无效的 XML 错误。

是否可以在没有嵌入 XML 的数据集/数据源的情况下生成报告?然后 RDLC XML 将提供布局,数据将来自代码隐藏?

这是我在 MSDN 文章的 Reports.xaml.cs 代码隐藏中尝试的内容,但它使用嵌入式数据集和数据源:

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();
}

最佳答案

我认为更好的方法是让报告根据您传递的参数值来决定要运行的存储过程。让报告做报告应该做的事情,获取和显示数据。背后的代码处理要运行的报告以及运行时间。

您描述的方法听起来像是一种让该死的报告复杂化的好方法。保持简单,为您着想,也为您之后必须管理报告的人着想。

关于c# - 动态定义SSRS报表的DataSet和DataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com