开发者

Why is Asp.Net WebForms GridView performing an unasked DataBind() in OnPreRender()?

I'm working with a GridView in an UpdatePanel and perform databinding to an ObjectDataSource using the DataSourceID property. Everything works just fine except for when I perform data validation in the object source and return false from the Update. I use this to set the content and visibility of another control in the GridView. However, this never shows up since the GridView performs a hidden DataBind() in 开发者_运维技巧OnPreRender() even though EnableViewState = "true" (via the BaseDataBoundControl).

Is there an easy way to just turn this extraneous DataBind() off? I've used reflection to set the _requiresDataBind field in BaseDataBoundControl to false and all works as I'd like it to work, but this is hardly a production-worthy approach. Is subclassing GridView the only way? Am I just missing something?


Apparently there is no way around this if you don't databind the grid. I ended up subclassing the GridView, adding a Boolean property called "CancelDataBind", and overriding the method called EnsureDataBind() and adding logic to test the CancelDataBind property before calling the base implementation. This worked out well.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜