将RDLC数据源设置为对象的问题

背景:

我的任务是将Access数据库应用程序转换为ASP.Net C#MVC。 这是我的第一个MVC应用程序。

有10份报告需要转换。 我们正在使用RDLC文件和reportviewer。 我正在使用Visual Studio 2010以及所有最新的补丁。 我们正在连接到已由现有Access数据库填充的SQL Server数据库,因此表结构几乎是一成不变的,否则我们将不得不尝试转换10年的数据。

我已完成除两份报告之外的所有报告。 最终报告需要更多处理,而不仅仅是显示数据库中的数据。 最简单的方法是创建一个C#对象并执行所有处理服务器端,然后使用RDLC显示结果。

问题

我遇到的问题是Visual Studio无法识别我创建的对象作为潜在的数据源。 每次我尝试“添加数据集”时,它都会显示“数据源配置向导”,并且只提供SQL Server数据库作为可能的数据连接。 我知道有一个屏幕存在,允许您选择一个对象作为您的数据集,但我从来没有看到该屏幕。

以下是对象(为清晰起见,删除了处理function):

public class TurnAroundVal { // Registration Package information public string dataType { get; set; } // Calculated totals; values only set through constructor or calculation function public int packageCount { get; private set; } public int dayCount { get; set; } public double avgTurnAround { get; private set; } public int upperRange { get; private set; } public int lowerRange { get; private set; } } public class TurnAroundVals { // Public Variables public IEnumerable TurnArounds { get; private set; } public DatePass dates { get; set; } public int pkgTotal { get; private set; } public double dayTotal { get; private set; } public double avgAllTurnArounds { get; private set; } } 

我也愿意使用IEnumerable的“TurnAroundVal”作为数据源,并将日期,整数和双精度作为参数传递。 要么工作。

我是否缺少Visual Studio 2010中的设置以允许RDLC Designer查看我创建的对象? 即使我认为这适用于我定义的类,我也错了吗?

回答

所有给出的建议都是有帮助的,但最终让我能够工作的是在同一个解决方案中创建一个临时的非Web项目并在那里创建RDLC。 当我去添加数据集时,它会显示“对象”作为选项。 您必须添加对Web项目的引用,以便您的对象可见,但随后您可以选择所需的对象并在RDLC中使用它。 之后,您只需将RDLC文件拖放到Web项目中,删除临时项目,就可以了。 请记住,您必须在代码中手动添加数据源,并且它们的名称必须与您在RDLC中指定的名称相同。

  1. 确保这些类与应用程序位于同一名称空间中。
  2. 在创建报告之前尝试构建应用程序
  3. 启动报告向导。 在DataSouce下,选择Web应用程序的名称。
  4. 在可用数据集下,您应该看到Visual Studio将其解释为“选择方法”。 如果一切顺利,那应该是TurnArounds。

您可能需要将类文件放在App_Data或App_Code文件夹中,但我不确定。

这也可能有所帮助。

http://msdn.microsoft.com/en-us/library/ms251692%28v=vs.100%29.aspx

将对象设置在相同的命名空间下,但设置在另一个项目上,然后在UI项目中引用该项目。

还尝试实现INotifyPropertyChanged

当您仅使用公共成员时,Visual Studio无法识别您的类。 当您使用getter和setter时,您可以在选择数据源时看到您的类。

Visual Studio中还有一些其他向导不能与公共成员一起使用。

干杯,马库斯

我在Visual Studio 2017中尝试在ASP.NET MVC项目中创建RDLC报表时遇到了同样的问题,因此我将其作为单独的答案添加,以明确这仍然是2018年1月的问题。

我的解决方案包括一个C#库项目和一个MVC客户端项目。

在C#库项目中添加报告(通过选择添加新项目,然后选择报告向导项目)将显示带有数据源配置向导的报告向导(我可以选择是否使用数据库,服务或对象作为数据源)以模态方式在其上:

报告向导显示数据源配置向导

然而,选择在MVC项目中添加新的报表向导项只是在没有数据源配置向导的情况下启动了报表向导:

没有数据源配置向导的报告向导

我尝试将业务对象类添加到我的MVC项目中,重新编译它然后再次向MVC项目添加一个Report,但我仍然得到了第二个屏幕截图,所以看起来你只是在添加时没有得到数据源配置向导MVC项目出于某种原因。