【问题标题】:How can I bind data to an ASP.NET Web Form report?如何将数据绑定到 ASP.NET Web 窗体报表?
【发布时间】:2011-08-16 13:44:47
【问题描述】:

我有一个“定义”为 Web 表单 (aspx) 的报告。它分为我归类为部分的部分,其中每个部分都有一个标题、可选描述,然后是表格 (GridViews)、图表(带有 asp:Chart 控件的用户控件)或详细信息(例如 HTML 定义列表)。目前,报表是显式填充的,即 Page_Load 中的代码分配 DataSource 属性并在 GridView 和 Charts 上调用 DataBind,显式地将标量值分配给详细部分的标签控件。

我想构建一个单一的数据集类型对象(最初是无类型的 DataSet,但最终是任何对象图)并将其分配给整个报表的 DataSource 属性,并调用报表的 DataBind 方法。这应该将数据绑定委托给报告部分,例如我将报表的 PropertyDetails 部分的 DataMember 属性设置为“PropertyDetails”,以便 PropertyDetails 部分呈现来自我的大报表数据集中“PropertyDetails”数据表的报表值。

我应该如何构建我的报告页面(或控件)以促进这一点?理想情况下,我想要一个类似于 GridView 或 DataList 控件的声明性结构,但没有重复元素,即每个报告部分都不同,这与 GridView 或 DataList 中的“行”不同;实际上更像是 GridView 中的列。

【问题讨论】:

    标签: asp.net data-binding webforms asp.net-4.0


    【解决方案1】:

    将数据包装到 DataSet 后,只需从 BaseDataBoundControl 类继承您的 Report。

    然后你可以直接DataBind到它。

    【讨论】:

    • +1 表示漂亮的指针@user357320,但我实际上也在寻找构建报告的建议,例如因此各个部分绑定到主数据集的不同成员等。
    • 当数据绑定报告(继承自 BaseDataBoundControl)将 DataBind 时,它将贯穿每个部分(也继承自 BaseDataBoundControl)。每个部分将有一个“DataName”(not DataMember),报表将在数据绑定之前使用它来设置该部分的 DataSource(通过从 DB 中读取 DataName 表并创建一个 DataSet)。我之前在动态表单输入应用中成功使用过这个方法。
    • 谢谢,忙着用琐碎的数据构建一个示例报告来感受一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2014-12-07
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多