我已经看到了设计器代码,也看到了在代码隐藏中构建 ObjectDataSource 的代码,但是这两种方法都通过文本命令或存储过程直接与数据库通信。对我来说,这似乎是不必要的代码重复,因为我的数据访问层已经有一个方法,它返回一个包含此报告所需数据的数据表。
如何以编程方式构建 ODS 并将其链接到我的数据访问层的方法?
编辑:
感谢所有回答的人。我的措辞非常糟糕。当初写这个问题的时候有太多不明白的地方。我应该问的是:
如何以编程方式将 .Net Reporting Services 报表 (*.rdlc) 绑定(bind)到数据访问层中的方法而不是 ADO.Net 数据集。
请参阅下面我的回答。
最佳答案
为了使用标准 .Net 数据集作为 Reporting Services 报表的数据源,我必须:
创建一个使用与 DAL 方法相同的存储过程的 ADO 数据集
使用 ADO 数据集填充设计器中报表中的字段
在 aspx 页面中,使用以下内容:
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" Height="655px" Width="980px"> <ServerReport ReportServerUrl="" /> <LocalReport> </LocalReport> </rsweb:ReportViewer>
在隐藏代码中:
ReportViewer1.ProcessingMode = ProcessingMode.Local Dim report As LocalReport = ReportViewer1.LocalReport report.ReportPath = "<your report path>" report.DataSources.Clear() Dim rds As New ReportDataSource() rds.Name = "<dataset name>_<stored proc name>" rds.Value = <your DAL method ()> report.DataSources.Add(rds) report.Refresh()
一旦您对此进行了测试并对所获得的报告感到满意,您就可以安全地从项目中排除 ADO 数据集。
注释:这远非理想,我所做的步骤可能是不必要的或我错过的。
让我真正头痛的一件事是,RDLC 中的 XML 包含不再相关的旧 ADO 数据集的定义。要删除这些内容,请右键单击解决方案资源管理器中的 rdlc 文件,然后选择“打开方式”,然后在下一个菜单中选择 XML 编辑器。
关于asp.net - 将 ObjectDataSource 绑定(bind)到数据访问层中的现有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363320/