在 Visual Studio 2022 Windows 窗体中安装和使用 ReportViewer

kev*_*owe 1 reportviewer rdlc visual-studio winforms

我已经多次将报表设计器和报表查看器安装到 studio 2022 中。报表设计器的安装工作正常。我可以创建向导并自己动手 .rdlc 报告。

我对此完全陌生。所有有关使用报表工具的在线教程都是从“将报表查看器拖到表单中并开始配置它”开始的。

将报表查看器安装到工具箱是从 nuget 包开始,然后从浏览项目文件夹中找到 dll。不幸的是,当我从工具箱将报表查看器添加到表单时,报表查看器落在表单下方,并且不允许我像所有教程中那样配置它。

我尝试过报表查看器 2010、版本 11、版本 12 和版本 15 软件包,其中一个软件包表示它修复了软件包未安装所有所需 dll 的问题。

根据教程应该有一个智能标签。这种情况不会发生,而且我看不到可以链接到报告的任何属性。我尝试将reportviewer 链接到rdlc,方法是将其放入localreport ReportEmbeddedResource 属性中,但运行代码时没有显示任何内容。

是我设置不正确,还是该工具无法正常工作?

Rez*_*aei 5

您需要安装以下内容:

注 1:此答案针对.NET Framework项目。如果您想要 ReportViewr for .NET 5+ 或 .NET Core 3.1+,您可能需要使用ReportViewer Core

注意 2:您还可以在将报表查看器控件添加到新的 Windows 窗体项目 文档文章中找到一些有用的信息。

注3:有一个扩展Microsoft Reporting Services Projects 2022,用于创建.rptprojReporting Service Reports (RDL)的Report项目;它不添加 RDLC 报告模板或报告应用程序项目模板或 RDLC 报告设计器。

Visual Studio 2022 - Windows 窗体中的 RDLC 报告和 ReportViewer

这是一个分步示例:

  1. 安装Microsoft RDLC Report Designer 2022并重新启动 VS。

  2. 创建一个新的Windows 窗体 .NET Framework项目。

  3. 安装Microsoft.ReportingServices.ReportViewerControl.Winforms NuGet 包,这会将 ReportViewer 添加到项目的工具箱中。

    注意:可选 - 您可能还想安装Microsoft.SqlServer.Types以消除有关库版本的警告。

  4. 将以下类添加到您的项目中:

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重建解决方案(项目)。

  6. 添加新项目>报告(您可以在 C# 项目下搜索或找到它),我们将其命名为 Report1.rdlc。

  7. 然后在设计模式下打开报告(双击)。然后“报告数据”窗口> “新建” > “数据集”

    注意:如果窗口未打开,则该窗口的快捷键是 Ctrl + Alt + D。

  8. 在“数据集属性”窗口中,单击“数据源”下拉列表前面的“新建...” ,然后选择“对象数据源”,按照向导操作,选择“产品”类和数据源,然后完成向导。确保选择数据源和产品类别,然后关闭新数据源窗口。

    在此输入图像描述

    注意:如果您在创建 Product 类后忘记构建项目,则该类不会出现在数据源的类列表中。

  9. 打开工具箱> 将Table的实例拖放到报表上,将鼠标悬停在第二行的第一个单元格上,然后单击 DB 图标将其绑定到 Id 列,并对第二行的第二个单元格执行相同操作以将其绑定到名称栏。然后保存报告:

    在此输入图像描述

  10. 在设计模式下打开窗体,然后从工具箱中将报表查看器的实例拖放到窗体上。您可以在顶部或 Microsoft Sql Server 类别下的工具箱中找到它。

    在此输入图像描述

  11. 单击智能标签(箭头),然后选择报告:

    在此输入图像描述

  12. 单击“选择数据源”,然后在窗口中选择“产品”。它将向您的表单添加一个productBindingSource:

    在此输入图像描述

  13. 双击表单并添加以下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        this.productBindingSource.DataSource = new List<Product>()
        {
            new Product(){ Id=1, Name= "Lorem" },
            new Product(){ Id=1, Name= "Ipsum" },
        };
        this.reportViewer1.RefreshReport();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  14. 运行项目并查看结果:

    在此输入图像描述