2010-10-22 58 views
0

我正在使用UpdatePanel中的GridView並使用DataSourceID屬性對ObjectDataSource執行數據綁定。除了在對象源中執行數據驗證並從Update中返回false以外,一切正常。我使用它來設置GridView中另一個控件的內容和可見性。但是,這從來沒有出現,因爲即使EnableViewState = "true"(通過BaseDataBoundControl),GridView在OnPreRender()中執行隱藏的DataBind()爲什麼Asp.Net WebForms GridView在OnPreRender()中執行未詢問的DataBind()?

有沒有簡單的方法可以將這種無關的DataBind()關閉?我已經使用了反射來將BaseDataBoundControl中的_requiresDataBind字段設置爲false,並且我希望它能夠正常工作,但這不是一種有生產價值的方法。子類化GridView是唯一的方法嗎?我只是想念一些東西?

回答

0

如果你不綁定網格,顯然沒有辦法解決這個問題。我最終創建了GridView的子類,添加了一個名爲「CancelDataBind」的Boolean屬性,並重寫了名爲EnsureDataBind()的方法,並添加了邏輯以在調用基本實現之前測試CancelDataBind屬性。這工作得很好。