【问题标题】:DataBind and Postback数据绑定和回发
【发布时间】:2009-05-06 19:09:33
【问题描述】:

这是一个一般的DataBind如何工作的问题......

我有一个带有 GridView 的简单页面(在 aspx 代码中)绑定到 ObjectDataSource。

我可以查看由 ObjectDataSource 调用的 Select() 函数,以了解它在初始加载和每次回发时都被调用。我有一些逻辑发生在回发上,这会影响 GridView 的数据,我想稍后在回发中调用 GridView.DataBind(),在我做了一些更改之后。

有没有办法防止每次回帖时自动重新绑定?这是否意味着我不能为此控件使用 ObjectDataSource?

【问题讨论】:

    标签: .net data-binding objectdatasource


    【解决方案1】:

    您是正确的,因为您正在寻找的细粒度控件是不可能的,并且需要后面的代码。 ASP.NET 的数据源对象不过是个痛点。你会发现,当你使用它们时,你会一次又一次地遇到这样的情况。

    您会发现一些问题是:

    • 非强类型
    • 不灵活(如您所述)
    • 混淆演示代码

    我已经开始在后面的代码中进行所有数据访问,并且没有回头。

    【讨论】:

      【解决方案2】:

      我也与这种自动绑定进行了斗争,并认为我在这里发布了我的解决方案:

      1. 从 ASPX 页面中删除“DataSourceID”,当它没有设置时,没有自动绑定
      2. 仅在需要 DataBinding 时在 CodeBehind 中设置 DataSourceID:myGridView.DataSourceID = "MyDataSource";
      3. 不要显式调用 myGridView.DataBind(),数据绑定会在 PreRender 自动发生

      我花了一段时间才弄明白,但现在一切正常。

      上下文

      我使用 ObjectDatasource 是因为它会自动为我处理 Gridview 的所有 分页排序。我正在使用带有 Linq2SQL 的数据层,并使用它的 Skip() 和 Take() 方法仅加载填充 GridView 一页所需的数据量。

      使用 ObjectDataSource 的 SelectMethodSelectCountMethod

      【讨论】:

      • 感谢您的建议。我同意加文的建议,即避免混乱。我的公司已经切换到 Telerik,它支持一种非常干净的代码隐藏绑定方法,称为“NeedDataSource”。不过,如果我需要切换回来,我会试一试。
      【解决方案3】:

      是的。如果您想在数据绑定发生时进行这种控制,您需要在后面的代码中进行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-24
        • 1970-01-01
        • 2018-11-21
        • 1970-01-01
        • 2016-10-10
        • 1970-01-01
        相关资源
        最近更新 更多