很多 ASP.NET 初學者對於在 Web Form 動態建立控制項的問題困擾,常見到的問題是為何動態建立的控制項無法像拖曳到畫面上的控制項有一樣的效果,例如無法載入 ViewState 的資料 (無法呈現更新的值) 及動態控制項事件處理等等問題。
以下這個範例就是說明如何在 Web Form 上動態建立一個 TextBox 及 Button 控制項,並處理 Button 的 Click 事件。
為何要在 Init 事件中就動態建立控制項,而不是在 Load 事件中呢?主要的原因是 Init 事件在 LoadViewState 之前發生,而 Load 事件是在 LoadViewState 之後。你要在 LoadViewState 之前就把控制項準備好,機制才能由 ViewState 中載入更新控制項的屬性值。
ASP.NET 魔法學院
2008/3/17 00:45| 閱讀數 : 7827 | 2 人收藏 1 人推薦 我要推薦 | 9 Comments | 文章分類: ASP.NET 基礎 動態建立控制項 | 訂閱
clark 2008/5/27 下午 05:07 回覆
# re: 在 Web Form 動態建立控制項的正確方法
正在尋找:根據條件判斷,做WizardSteps的顯示(wizard控制項)感謝,受用了
DavidCheng 2008/6/12 上午 10:45 回覆
請問,那該如何動態建立"使用者控制項"呢?
jeff377 2008/6/12 下午 12:19 回覆
使用 LoadControl
Dim myControl1 As MyControl = CType(LoadControl("TempControl_Samples1.vb.ascx"),MyControl) PlaceHolder1.Controls.Add(myControl1)
Boris 2008/12/31 下午 05:13 回覆
oButton.ID = "myButton" & indexoButton.Text = "按鈕"Me.Form.Controls.Add(oButton)'將 Button 的 Click 事件導向 Button_Click 函式AddHandler oButton.Click, AddressOf Button_Click================================================請問能給予指導 有辦法把index傳遞給Button_Click函式嗎?類似Function(test)這樣..
peter 2009/5/8 下午 03:27 回覆
請問一下如果已經動態新增上去的控制項可以在其他方法中刪除嗎??
walter 2009/6/20 下午 04:31 回覆
to peter : 動態新增的按鈕也可以刪除,我測試在 Button 按下去時使用 Me.Form.Controls.Remove(oButton) 移除按鈕是沒有問題的。
卓小萍 2009/7/27 上午 10:48 回覆
請問一下大大...如果動態產生的控制項是在MasterPage內??而且還包在Panel,要如果抓取該ID??
hatelove 2009/7/27 上午 11:27 回覆
to 卓小萍 :
用大大另一篇 使用遞迴findcontrol的方式,就能跳脫被container綁住findcontrol的問題。
new control後在add時,可以把ID命的有意義一點,最麻煩的情況還可以用regular expression去過濾。
卓小萍 2009/7/28 上午 11:15 回覆
Dear hatlove我後來用ContentPlaceHolder cph = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");這種方式把他像剝洋蔥一樣,一層一層剝開...結果,人就在我手上了...呵呵...但不知道與你的那個方式是否有差...
☆ 有些事現在不做,就一輩子都不會做了 ☆