为什么Asp.Net WebForms GridView在OnPreRender()中执行未保留的DataBind()?

时间:2010-10-22 17:00:57

标签: asp.net gridview data-binding

我正在使用UpdatePanel中的GridView,并使用DataSourceID属性对ObjectDataSource执行数据绑定。除了我在对象源中执行数据验证并从Update返回false之外,一切正常。我用它来设置GridView中另一个控件的内容和可见性。但是,由于GridView在DataBind()中执行隐藏的OnPreRender()即使EnableViewState = "true"(通过BaseDataBoundControl),也从未显示过。

是否有一种简单的方法可以将这个无关的DataBind()关掉?我已经使用反射将BaseDataBoundControl中的_requiresDataBind字段设置为false,并且所有字段都按照我希望的方式工作,但这不是一个有生产价值的方法。是继承GridView的唯一方法吗?我只是错过了一些东西吗?

1 个答案:

答案 0 :(得分:0)

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