Dar*_*ght 29 asp.net entity-framework reporting-services
我们希望将Microsoft Reports - SSRS添加到我们的一个内部网站.
该数据库已安装所有报告功能.
该网站正在使用Entity Framework 4获取所有数据.
我已经能够使用传统的创建DataSet(*.XSD)的方式创建报表,这很有效.
但我的问题是,是否可以利用网站中现有的实体框架来获取报告所需的数据?而不是必须重新发明轮子并制作整个DataSet,以及关系等.
这是一个网站,而不是应用,所以这(http://weblogs.asp.net/rajbk/archive/2010/05/09/creating-an-asp-net-report-using-visual-studio-2010-part- 1.aspx)似乎不适用; 我没有看到DataSource(在教程的第2部分)
更新
作为旁注,我们希望避开昂贵的第三方控件等.
另外,查看问题的另一种方法可能是从实体框架实体模型生成*.XSD; 这可能吗?这不是理想的,但会让我们开始运行..
下面是我在一个.NET winForms应用程序中设置报表数据源的快速示例.
public void getMyReportData()
{
using (myEntityDataModel v = new myEntityDataModel())
{
var reportQuery = (from r in v.myTable
select new
{
l.ID,
l.LeaveApplicationDate,
l.EmployeeNumber,
l.EmployeeName,
l.StartDate,
l.EndDate,
l.Supervisor,
l.Department,
l.Col1,
l.Col2,
.......,
.......,
l.Address
}).ToList();
reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource datasource = new ReportDataSource("nameOfReportDataset", reportQuery);
reportViewer1.LocalReport.DataSources.Add(datasource);
Stream rpt = loadEmbededReportDefinition("Report1.rdlc");
reportViewer1.LocalReport.LoadReportDefinition(rpt);
reportViewer1.RefreshReport();
//Another way of setting the reportViewer report source
string exeFolder = Path.GetDirectoryName(Application.ExecutablePath);
string reportPath = Path.Combine(exeFolder, @"rdlcReports\Report1.rdlc");
reportViewer1.LocalReport.ReportPath = reportPath;
reportParameter p = new ReportParameter("DeptID", deptID.ToString());
reportViewer1.LocalReport.SetParameters(new[] { p });
}
}
public static Stream loadEmbededReportDefinition(string reportName)
{
Assembly _assembly = Assembly.GetExecutingAssembly();
Stream _reportStream = _assembly.GetManifestResourceStream("ProjectNamespace.rdlcReportsFolder." + reportName);
return _reportStream;
}
Run Code Online (Sandbox Code Playgroud)
我的方法一直是将RDLC文件与对象数据源一起使用,并以"本地"模式运行它们.这些数据源是......我的实体!这样,我使用了我用于我的网络应用程序的所有相同的业务逻辑,字符串格式,文化意识等.有一些怪癖,但我能够和他们住在一起:
但是,好处非常好:
归档时间: |
|
查看次数: |
21718 次 |
最近记录: |