1、在頁面動態添加一個控件的方法。 在頁面的 HTML 代碼上設置一個 asp:PlaceHolder 站位控件,當頁面被加載的時候,在這個 PlaceHolder 控件上添加所需要的其他控件。
2、遍歷控件的方法。 頁面可以被看成各種控件組成的一個集合。在頁面被初始化和加載過程中,可以遍歷這些控件,找到特定的控件,或者改變某些控件的屬性。 先看下面的一個例子:
這個例子列出頁面上所有的控件,結果如下:
A List of the Controls in the Controls
Collection
System.Web.UI.LiteralControl -
System.Web.UI.WebControls.Label - lblControlList
System.Web.UI.LiteralControl -
System.Web.UI.HtmlControls.HtmlForm -
System.Web.UI.ResourceBasedLiteralControl -
特別要注意的一點:以上代碼沒有列出 ID=“txtName”的 TextBox 控件!因爲這個 TextBox 控件包含在 Form 裏面,是 Form 的一個子控件。而我們的代碼 foreach(Control c in Controls) 只關心當前頁面 Controls 的控件,至於子控件卻未能涉及。(可以把這些控件理解成一個樹狀的層次關係)
頁面 Controls
/ | / //foreach(Control c in Controls)
控件1 控件2 控件3 // 只判斷控件1、2、3屬於頁面 Controls
/ / //而未涉及到下屬子控件
子控件1 子控件2
爲了真正做到遍歷所有控件集,可以用遞歸的方法來實現:
總結: 理解 asp.net 頁面的組成及控件的層次結構,通過遞歸實現控件遍歷。
以上代碼運行結果如下:
A List of the Controls in the Controls
Collection
3、動態地創建控件、遍歷創建的控件以及改變控件屬性的一個應用。
用戶輸入一個1-10的整數,按按鈕後動態創建相應數字的 TextBox。代碼如下:
- System.Web.UI.LiteralControl
- System.Web.UI.WebControls.Label
- System.Web.UI.LiteralControl
- System.Web.UI.HtmlControls.HtmlForm
- System.Web.UI.LiteralControl
- System.Web.UI.WebControls.TextBox
- System.Web.UI.LiteralControl
- System.Web.UI.ResourceBasedLiteralControl
這下 TextBox 控件真的露出了廬山真面目。