背景:
我的任务是将 Access 数据库应用程序转换为 ASP.Net C# MVC。这是我的第一个 MVC 应用程序。
有 10 份报告需要转换。我们正在使用 RDLC 文件和 reportviewer。我正在使用带有所有最新补丁的 Visual Studio 2010。我们正在连接一个由现有 Access 数据库填充的 SQL Server 数据库,因此表结构几乎是一成不变的,否则我们将不得不尝试转换 10 年的数据。
除了两份报告,我已经完成了所有报告。最终报告需要更多处理,而不仅仅是显示数据库中的数据。最简单的方法是创建一个 C# 对象并在服务器端进行所有处理,然后使用 RDLC 显示结果。
问题
我遇到的问题是 Visual Studio 无法将我创建的对象识别为潜在的数据源。每次我尝试“添加数据集”时,它都会弹出“数据源配置向导”,并且只提供 SQL Server 数据库作为可能的数据连接。我知道有一个屏幕允许您选择一个对象作为您的数据集,但我从来没有看到那个屏幕。
以下是对象(为清楚起见删除了处理功能):
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<TurnAroundVal> 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; }
}
我也愿意使用“TurnAroundVal”的 IEnumerable 作为数据源,只需将日期、int 和 double 作为参数传递。要么工作。
问题
Visual Studio 2010 中是否有我缺少的设置以允许 RDLC 设计器查看我创建的对象?我什至认为这将适用于我定义的类,我错了吗?
回答
给出的所有建议都很有帮助,但最终让它对我有用的是在同一解决方案中创建一个临时的非 Web 项目并在那里创建 RDLC。当我去添加一个数据集时,它显示“对象”作为一个选项。您必须添加对 Web 项目的引用,以便您的对象可见,然后您可以选择您想要的并在 RDLC 中使用它。之后,您只需将 RDLC 文件拖放到您的 Web 项目中,删除临时项目,就可以开始了。请记住,您必须在代码中手动添加数据源,并且它们的名称必须与您在 RDLC 中指定的名称相同。