有没有人能够将 SubSonic 生成的集合用作 Microsoft 报告 (rdlc) 的“业务对象数据源”?我已经生成了 SubSonic 类代码,但由于某种原因,报告数据源窗口没有将该类视为潜在的对象集合数据源。
我需要做些什么才能使其正常工作吗?
在此先感谢...vsdotnetguy
我之前已经从业务对象加载了 Reporting Service 报告(通过 NHibernate 加载——这并不准确,但为了论证而足够接近)。
几个关键点: 1. 在 List 中返回你的对象,即使你只返回一个对象。2. 您需要 FLAT 业务对象。您可能必须通过 DTO 转换才能获得它。扁平化是指业务对象中最复杂的属性是字符串和数字(int、decimal、double)。如果您希望获取这样的值:myObject.Customer.Name,请忘记它。创建一个 CustomerName 属性。3. 如果您需要来自多个地方的数据,请尝试将您的报告分解为子报告。您关闭数据源键以确定要返回报告的数据。
我会添加更多,因为我记得,我已经做了几个月了。
是的,我已经做到了,您只需要确保包含您的报告的项目引用您的 SubSonic 项目(显然 :)。
有时我还发现 Visual Studio 可能会有点无聊,需要重新启动才能使用 SubSonic 生成的对象重新填充数据源窗口。
谢谢克里斯和亚当,
这是我找到的答案。
就我而言,我想在运行时使用 SubSonic 对象集合动态设置主报表数据源和子报表数据源。但是,我还想通过拖放数据源列来设计报表布局。
但是我无法使用拖放来设计报告,因为我的 SubSonic 集合都没有出现在网站数据源中。
然而,后来当我使用 ObjectDataSource 控件进行一些控件绑定时,我注意到现在我的 SubSonic 集合显示在网站数据源窗口中,我可以拖放报告布局。
So if you are dynamically setting the report datasources at run time and ARE NOT using the ObjectDataSource control already in your project, you MUST add a dummy ObjectDataSource control to one of your aspx pages. This will then make the business object datasources show up in the report designer.