向 VS 2013 中的 Reporting Services 设计器提供来自代码类的数据

Posted

技术标签:

【中文标题】向 VS 2013 中的 Reporting Services 设计器提供来自代码类的数据【英文标题】:Provide data from a code class to the Reporting Services designer in VS 2013 【发布时间】:2015-01-29 09:49:24 【问题描述】:

我正在尝试创建本地 SQL Server Reporting Services 报告(.rdlc 文件)并将此报告连接到我在代码中生成的一些数据集(无直接 SQL Server 连接)。

我创建了一个 ReportDataProvider 类,其中包含一些针对各种标准集返回 IList<T> 的实例方法 - 但我似乎无法找到一种方法让这些数据提供方法显示在 Visual Studio 2013 内的 Reporting Services 设计器中.

当我查看在 Report Data 资源管理器窗口中单击 Datasets 节点上的 Add DataSet 后出现的对话框时,我看到那里列出了很多我的类 - 但不是我的数据提供者类。

为了让它出现在可能的数据源的下拉列表中,我有什么特别需要注意的吗(创建类static?用一些属性装饰它?)?我尝试了各种方法,但未能找到任何方法让它正常工作......

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,并发现了另一个可能很容易错过的案例。在我的情况下,包含 List 返回方法的类有一个带有必需参数的构造函数,并且它没有显示在 DataSource 下拉列表中。在我向我的类添加无参数构造函数并重建后,它现在是可见的!

这可能与 RDLC UI 分析合格方法的方式有关,它可能会尝试在流程中实例化类。

【讨论】:

【参考方案2】:

遇到了类似的问题。发现如果设法获得没有错误的构建,那么我的命名空间似乎可以从数据源中选择。

【讨论】:

【参考方案3】:

我做了一些研究,并尝试了不同的方法来添加类。不幸的是,您在此设计器中看不到静态类。我尝试了不同的方法,但没有成功。

对于非静态类,本手册每次都适用于我,即使是 Interfaces,如 IList,但我在这里不代表它:

    确保您的数据报告类的命名空间在您的项目中与 .rdlc 文件可用。可以是您需要添加参考。 编写数据报表类并重建解决方案。 在您的 VS 中关闭并重新打开 .rdlc 文件。

我使用的是 VS 2013 Ultimate Update 2。

这是我的课:

using System.Collections.Generic;

namespace YourReportNamespace

    public class ReportClass
    
        public List<string> TestReportData()
        
            return new List<string>();
        
        public static List<string> StaticTestReportData()
        
            return new List<string>();
        
    


    public class ReportWithFieldsClass 
    
        private List<string> Data = new List<string>();

        public List<string> TestReportData()
        
            return Data;
        

        public List<string> TestReportData2()
        
            return Data;
        

        public static List<string> StaticTestReportData()
        
            return new List<string>();
        
    

    public static class ReportWithFieldsStaticClass //This class will not appear
    
        private static List<string> Data = new List<string>();

        public static List<string> StaticTestReportDataFromField()
        
            return Data;
        
        public static List<string> StaticTestReportData()
        
            return new List<string>();
        
    

这是我通过手册后在设计师那里得到的:

【讨论】:

感谢您的努力 - 不幸的是,这几乎也是我尝试过的 - 但它对我从来没有用过。无论我是否创建类或方法static,无论我是否将它们与报告放在同一个程序集中或不同(引用)的程序集中 - 我从来没有看到我的类被称为有效的 DataSource 。 .... 当我四处搜索时,我发现了这个answer。也许这是您问题的答案?至于你使用泛型类型。

以上是关于向 VS 2013 中的 Reporting Services 设计器提供来自代码类的数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 VS 2005 Reporting Services 整合SharePoint 2007 支持比较Part1

vs2013 中的数据库模式查看器功能

是否可以拥有向后兼容 vs2013 和 vs2017 的 vs 项目?

Datamart vs.reporting Cube,有啥区别?

Reporting Services 中的图表百分比差异

VS 2013 可以向我展示我的代码所采用的路径的可视化表示吗?