【问题标题】:Why is Asp.Net WebForms GridView performing an unasked DataBind() in OnPreRender()?为什么 Asp.Net WebForms GridView 在 OnPreRender() 中执行未询问的 DataBind()?
【发布时间】:2010-10-22 17:00:56
【问题描述】:

我正在使用 UpdatePanel 中的 GridView,并使用 DataSourceID 属性对 ObjectDataSource 执行数据绑定。一切正常,除了我在对象源中执行数据验证并从更新返回false。我使用它来设置 GridView 中另一个控件的内容和可见性。但是,这永远不会出现,因为 GridView 在OnPreRender() 中执行隐藏的DataBind(),即使EnableViewState = "true"(通过BaseDataBoundControl)。

有没有简单的方法来关闭这个无关的DataBind()?我已经使用反射将 BaseDataBoundControl 中的 _requiresDataBind 字段设置为 false 并且所有工作都按照我的意愿工作,但这几乎不是一种生产价值的方法。子类化 GridView 是唯一的方法吗?我只是错过了什么吗?

【问题讨论】:

    标签: asp.net gridview data-binding


    【解决方案1】:

    如果您不对网格进行数据绑定,显然没有办法解决这个问题。我最终对 GridView 进行了子类化,添加了一个名为“CancelDataBind”的布尔属性,并覆盖了名为 EnsureDataBind() 的方法,并在调用基本实现之前添加了测试 CancelDataBind 属性的逻辑。效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多