asp.net - 将 ObjectDataSource 绑定(bind)到数据访问层中的现有方法

标签 asp.net vb.net data-binding

我已经看到了设计器代码,也看到了在代码隐藏中构建 ObjectDataSource 的代码,但是这两种方法都通过文本命令或存储过程直接与数据库通信。对我来说,这似乎是不必要的代码重复,因为我的数据访问层已经有一个方法,它返回一个包含此报告所需数据的数据表。

如何以编程方式构建 ODS 并将其链接到我的数据访问层的方法?

编辑:

感谢所有回答的人。我的措辞非常糟糕。当初写这个问题的时候有太多不明白的地方。我应该问的是:

如何以编程方式将 .Net Reporting Services 报表 (*.rdlc) 绑定(bind)到数据访问层中的方法而不是 ADO.Net 数据集。

请参阅下面我的回答。

最佳答案

为了使用标准 .Net 数据集作为 Reporting Services 报表的数据源,我必须:

  1. 创建一个使用与 DAL 方法相同的存储过程的 ADO 数据集

  2. 使用 ADO 数据集填充设计器中报表中的字段

  3. 在 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()
    
  4. 一旦您对此进行了测试并对所获得的报告感到满意,您就可以安全地从项目中排除 ADO 数据集。

注释:这远非理想,我所做的步骤可能是不必要的或我错过的。
让我真正头痛的一件事是,RDLC 中的 XML 包含不再相关的旧 ADO 数据集的定义。要删除这些内容,请右键单击解决方案资源管理器中的 rdlc 文件,然后选择“打开方式”,然后在下一个菜单中选择 XML 编辑器。

关于asp.net - 将 ObjectDataSource 绑定(bind)到数据访问层中的现有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363320/

相关文章:

c# - ASP.NET DateTime.Now 卡住在单个页面上

c# - 网络凭据未保存在 CredentialCache 中

asp.net - 将 - asp.net mvc 5 Web 应用程序 (Visual studio 2017) 转换为 .exe 安装文件

c# - WPF:访问同一控件中的两个 DataContext

c# - INotifyPropertyChanged 不适用于 WPF 数据绑定(bind)

data-binding - Knockout.js 基于 css 类添加可见性 observable

asp.net - word-wrap 不是已知的 CSS 属性名称

VB.NET 如何将文本写入 .ini 文件?

c# - C#中的FNT字体文件

sql - 如何处理从类型 'DBNull' 到类型 'Integer' 的转换无效