c# - C# WPF 和 SQL Server 报告
问题描述
我有一个数据库,我正在尝试从中打印报告。我的数据输入是通过 C# WPF 应用程序完成的,因此我在主视图 (MVVM) 上添加了一个“打印”按钮,用于创建新窗口和视图模型。该窗口有一个 windowsFormsHost 并创建了一个 ReportViewer 控件:
public partial class Report : Window
{
private bool _isReportViewerLoaded;
public Report(FlatObservationViewModel vm)
{
InitializeComponent();
_reportViewer.Load += ReportViewer_Load;
}
private void ReportViewer_Load(object sender, EventArgs e)
{
if (!_isReportViewerLoaded)
{
Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new
Microsoft.Reporting.WinForms.ReportDataSource();
this._reportViewer.LocalReport.ReportEmbeddedResource = "MOATools.FieldObervationReport.rdlc";
_reportViewer.RefreshReport();
_isReportViewerLoaded = true;
}
}
}
使用报告设计器我创建了报告 (FieldObervationReport.rdlc),它有一个拼写错误,当我弄清楚所有这些时我会修复它,但现在我正在使用它。报表设计器允许我从 ReportData 窗格添加数据集/数据源,并且我正在尝试使用专门为报表设置的视图模型类:
public class FlatObservationViewModel : ViewModelBase
{
public FlatObservationViewModel(Projectinformation p, Reportinformation r, PMToolsDCDataContext dc)
{
Project = p;
Report = r;
Obs = new ObservableObservations(dc, r.Reportdate, p.ID);
}
public Projectinformation Project { get; set; }
public Reportinformation Report { get; set; }
public ObservableObservations Obs { get; set; }
public int DivNum { get; set; }
public int ObsNum { get; set; }
public string DivName { get; set; }
public string Desc { get; set; }
public string OpenDate { get; set; }
public string CloseDate { get; set; }
}
当我将 DataSet 添加到报告中时,我将其命名为 ReportVMDS,它显示了我想要的 ViewModel 类中的所有字段。但我不知道如何设置 ReportViewer 以正确绑定到我在 Visual Studio GUI 中设置的数据集和数据源。因为我有一个 WPF 应用程序,所以我没有将 Windows 窗体控件拖到 WindowsFormsHost 上,而且我找到的所有教程都是基于在 GUI 中设置 ReportViewer。我认为 ReportViewer_Load 处理程序是我需要添加数据集并对其进行初始化的地方,但是 reportdesigner 设置的数据集(ReportVMDS)不是一个有效的类,所以如果我尝试这个:
ReportVMDS dataset = new ReportVMDS();
我收到错误:“找不到类型或命名空间”,并且代码中的红色波浪线下划线。当我运行程序并按下打印按钮时,我的窗口打开并告诉我尚未提供数据源实例。
因此,我认为我需要一些关于如何使用 DI 将我的报告与我的视图模型连接起来,然后让 GUI 报告设计也与带有 DataSource 和 DataSet 的视图模型一起工作的指针。
任何帮助表示赞赏!如果这有什么不同,我正在使用 LinqToSQL 来填充我的视图模型。
解决方案
推荐阅读
- dialogflow-es - 在对话流响应中显示超链接 URL 和图像
- grails - Grails findAll 和 GroupBy
- javascript - 使用重用模式捕获组
- javascript - 使用 FormData 上传单个文件
- mysql - sql查询where子句中的参数
- python-3.x - 我是一个绝对初学者的 Python 编码器
- python - 如何删除 Python Tkinter 中的打印文本?
- aws-codebuild - 带有 S3 源的 AWS CodeBuild:调用 startBuild 时出错:S3 文件夹源位置的源版本应为空
- javascript - 如何在我的网页上每 15 秒打开一次神奇的弹出窗口
- python - Scrapy Installation (Microsoft Visual C++ 14.0 is required)