War*_*2d2 19 c# asp.net-mvc reportviewer rdlc
背景:
我的任务是将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; }
}
Run Code Online (Sandbox Code Playgroud)
我也愿意使用IEnumerable的"TurnAroundVal"作为数据源,并将日期,整数和双精度作为参数传递.要么工作.
题
我是否缺少Visual Studio 2010中的设置以允许RDLC Designer查看我创建的对象?即使我认为这适用于我定义的类,我也错了吗?
回答
所有给出的建议都很有帮助,但最终让我能够工作的是在同一个解决方案中创建一个临时的非Web项目并在那里创建RDLC.当我去添加数据集时,它会显示"对象"作为选项.您必须添加对Web项目的引用,以便您的对象可见,但是您可以选择所需的对象并在RDLC中使用它.之后,您只需将RDLC文件拖放到Web项目中,删除临时项目,就可以了.请记住,您必须在代码中手动添加数据源,并且它们必须与您在RDLC中指定的名称相同.
您可能需要将类文件放在App_Data或App_Code文件夹中,但我不确定。
这也可能有帮助。
http://msdn.microsoft.com/en-us/library/ms251692%28v=vs.100%29.aspx