2011-02-13 48 views
0

我正在使用實體框架4.0將數據庫對象綁定到ascx控件上的DetailsView。在DetailsView中,我有一些asp:面板,我想顯示/隱藏取決於該人訪問中發生的事情。詳情查看重置綁定的可見性?

因此,通過頁面的第一次我在FormView_OnLoad事件中設置panelA.Visible = false,並且一切都很好 - 該面板不會在HTML中輸出。它傾聽我在這裏問的問題。

一旦我點擊提交和回發,我再次檢查發生了什麼,並在FormView_OnLoad和EntityData_OnUpdating中設置panelA.Visibe = false。但是這一次,panelA顯示的頁面出現時。

我發現我只能通過在DetailsView_PreRender中設置visible = false或通過將可見性綁定到公共變量來回發後隱藏該面板。

我在想也許在life cycle的DetailsView綁定再次結束的方式,並拋出我的知名度設置,即使他們沒有約束。因此,要在回發中顯示/隱藏DetailsView中的面板,我是否必須始終在DetailsView_PreRender或之後設置可見性?

我在這裏的正確軌道,還是別的東西在最後一秒重置我?

爲什麼我可以通過頁面首次設置可見度,但不能回發?

回答

0

回發處理後,您應該始終對頁面結構進行最終修改 - 這就是爲什麼PreRender事件存在的原因。您的方案中的其他可能事件可能是處理DataBound事件,但更好和更清晰的方法是PreRender

+0

謝謝。我瞭解PreRender是在所有事情都做完之後改變事物的地方。 但我仍然困惑爲什麼頁面狀態會保持我的更改第一次通過頁面,但不是當我更改回發設置。 – Chad 2011-02-14 01:18:39