2009-05-18 77 views
2

我已經將一個簡單的表單放在一起,以突出顯示動態表單的概念。我需要做的是當用戶點擊「添加」按鈕時添加一個控件到頁面。ASP.NET在回發中添加控件

我現在有一個簡單的計數器,它存儲了創建的控件的數量,當點擊按鈕時該數量會增加。

起初,我認爲它就像在事件處理程序中調用RecreateChildControls(該類從CompositeControl繼承)一樣簡單。這確實會根據遞增的值創建新的控件,但是所有的控件狀態都會丟失。我假設這是因爲事件已經在Init &加載階段後被觸發。

有沒有其他方法可以做到這一點?我可以通過檢查Init事件上的回發值來使其工作,但是這似乎有點冒險。

回答

1

這確實會根據遞增的值創建新的控件,但是所有的控件狀態都會丟失。

您在page life cycle中調用功能太遲。狀態應用於「加載」階段的控件,因此如果控件未在之前創建,那麼狀態將不會恢復,因爲控件在嘗試應用狀態時不存在。

您需要在頁面初始化事件中創建控件。

就個人而言,我不是ASP.Net動態控件的粉絲。他們有自己的位置,但更多的時候我會選擇一個合適的最大數量的允許控件,最初在頁面上放置全部,並且只根據需要啓用/禁用/隱藏/顯示它們。

+0

通常情況下,我會按照你的建議在Init事件中做所有事情,但是當用戶點擊一個按鈕時,我需要添加額外的控件,因爲事件在Load之後觸發,所以我不會像你指出的那樣獲取值。 由於要求,我無法真正添加最大控件限制。除了在Init事件上攔截EventArgs,還有其他方法嗎? – Rogeclub 2009-05-18 13:19:53