Vb.net 具有对象数据源的Visual Studio 2010本地SSRS报表(.rdlc)

Vb.net 具有对象数据源的Visual Studio 2010本地SSRS报表(.rdlc),vb.net,visual-studio-2010,asp.net-mvc-2,reportviewer,rdlc,Vb.net,Visual Studio 2010,Asp.net Mvc 2,Reportviewer,Rdlc,我已经在本地处理模式下使用ReportViewer 2005和2008创建了更多的项目。所有Visual Studio 2005或2008 ASP.NET web窗体项目。我总是在报告中使用某种风格的对象数据源 今晚,我试图将同样的功能添加到VisualStudio2010MVC2项目中,但失败得很惨。首先,addnewitem>Reporting>报告现在是2008年的RDLC,而不是2005年的RDLC报告。其次,当尝试添加数据集时,我通常使用返回IEnumerablesOf Stuff的静

我已经在本地处理模式下使用ReportViewer 2005和2008创建了更多的项目。所有Visual Studio 2005或2008 ASP.NET web窗体项目。我总是在报告中使用某种风格的对象数据源

今晚,我试图将同样的功能添加到VisualStudio2010MVC2项目中,但失败得很惨。首先,addnewitem>Reporting>报告现在是2008年的RDLC,而不是2005年的RDLC报告。其次,当尝试添加数据集时,我通常使用返回IEnumerablesOf Stuff的静态方法创建数据代理类的方法不会显示为DataSources下拉列表中的sources

第三,我唯一的选择是添加数据库连接。没有可从中拾取的对象数据源:

我被难住了。就像我提到的那样,实际上使用ReportViewer控件呈现报表并没有任何问题。我不能做的是弄清楚如何使用VisualStudio2010在这些新型的2008报表中设置数据源,以便将域对象列表输入到ReportViewer并显示报表

更新

通过进一步的研究,我发现MVC项目不允许在其中使用对象数据源。我的问题的一个解决方案是在解决方案中创建一个单独的项目——一个web应用程序、一个服务,甚至仅仅是一个类库,以便将报表添加到其中并进行相应的设计


我仍然在这里寻找替代方案。

简短的回答是:是的,您可以在RDLC 2008中使用对象数据源,这并不直观。以下是方法:

在[Design]视图中打开RDLC页面。稍后,数据选项卡将显示在VisualStudio的顶部。选择“添加新数据源”,选择“对象”,然后选择“下一步”。从那里,您将能够看到可以绑定到的对象列表。从项目中选择DTO/业务对象/任何内容,然后点击Finish。在VisualStudio左侧的“报告数据”侧栏选项卡中,您将看到添加的对象。复制它生成的数据源名称,它将类似于MyProject\u MyObject

现在在控制器中,您可以提取该DTO/BusinessObject的IEnumerable并将其作为数据参数和数据源名称传入,如下所示抱歉,没有VB语法:

ReportDataSource reportDataSource =
            new ReportDataSource("MyProject_MyObject", myIEnumerable);

我不确定您是否看到了我看到的内容,但在我看来,带有私有构造函数的类,即使带有返回同一类列表的公共静态方法,也不会出现在列表中

将不会在“数据源”下拉列表中显示为源


几天前我也有同样的问题。我通过为VS10安装SP1解决了这个问题

我也遇到了同样的问题,并按照自龙路的说明回答,一旦我有了报告的处理程序,全局数据源的选项没有出现,就只有连接向导了。我右键点击了我的项目,然后点击了构建。在此之后,我尝试再次添加全局数据源,但连接向导没有显示,但全局数据源选项显示了。

我遇到了同样的问题,但随后将报表和实体类移动到另一个与WebApplication分离的项目中,当我这样做时,向导会显示除数据库连接以外的其他选项,因此,我向C库添加了一个对象数据源。然后我用它来检索报表定义并嵌入到.aspx中,希望对大家有所帮助

以下是一些解决方案。第二个更好,因为它不需要不必要地复制程序集

解决方案1好的 正如问题本身和文章中所描述的,只需为项目创建一个单独的库,并在其中添加rdlc文件。这似乎是MVCWeb应用程序项目类型本身的一个bug,因此任何其他项目类型(如类库)都应该可以工作。数据源配置向导现在应如下所示:

解决方案2更好 如中所述,您可以在MVC项目的任意位置添加一个.aspx页面,以诱使Visual Studio引入正确的设计时库

只需执行以下操作:

关闭所有窗口 清洁和重建解决方案 将WebForm1.aspx添加到项目中 打开RDLC文件并从下拉列表中选择一个数据源:


+感谢您指出这一点,确认DataSourceTypes弹出窗口在MVC项目中不起作用。感谢您回答这样一个老问题。这些年来,你已经接触到了两种解决方法,它们的细节足以保证你能接受。为什么数据源列表中显示了我项目中的一些名称空间,而其他一些则没有?@Leandro,简单检查一下,但是你已经构建了你的项目吗?如果你仍然有问题,最好在一个新的问题中详细说明这些问题,说明你尝试了什么,以及你在一个较长的背景下面临的问题,而不是一个新的问题comment@KyleMit谢谢你的回答。idk why只显示返回列表或多维对象的对象,仅供其他人参考。有 我的逻辑。。。但是微软的帮助真的很讨厌这个bug和向导