項目當中有,要用到動態創建控件,以前在Winform中,容易實現,Web中花了半天的時間學習了一上,現在這里記錄一下:基於asp.net2.0,簡要記錄一下頁面的控件如何動態創建的步驟,同時也記錄一下怎麼使用這些動態創建的控制項的方法。
為了使篡動態生成的控件有序,拖一個Table放在頁面上。然后將控件放在Table的Cell當中。我是這樣子排序的,不知各位是否有更好的解決方法,請隨后賜教。
動態添加控件,在Page_Init事件中加載。
OK,閑言少敘,實現步驟:
新建一個方法名為:CreateControlDynamically的,復制如下代碼:
CreateDynamic
Sub CreateControlDynamically(ByVal nCount As Integer)
For i As Integer = 1 To nCount
Dim tr As TableRow = New TableRow()
Dim tc As TableCell = New TableCell()
Dim myLabel As Label = New Label()
'這裏設置該label的ID,對於不同的label,必須設置成不同的ID
myLabel.ID = "lbl" & i
myLabel.Text = "Critial" & i
tc.Controls.Add(myLabel)
tr.Cells.Add(tc)
Dim tc2 As TableCell = New TableCell()
Dim mytextbox As TextBox = New TextBox()
mytextbox.ID = "txt" & i
mytextbox.Text = "TextBox" & i
tc2.Controls.Add(mytextbox)
tr.Cells.Add(tc2)
Me.tbl.Rows.Add(tr)
Next
調用的時候,在Page_Init中,直接敲CreateControDynamically(5)就OK了。順便將aspx的源碼也貼出來:
aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Create Control Dynamically</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Table ID="tbl" runat="server">
<asp:TableRow ID="trLbl" runat="server">
</asp:TableRow>
<asp:TableRow ID="trTbx" runat="server">
</asp:TableRow>
</asp:Table>
<br />
<asp:Button ID="btnOK" runat="server" Text="Button" /></div>
</form>
</body>
</html>
OK,F5運行一下,看到了什么,5行2列的十個控件顯示出來了。
至於如何使用你剛動態創建控件的呢?要使用這些控件,首先必須要知道這些控制項的ID,對於上文所說的這些控制項,由於我在使用的時候,在後面加了1、2、3、4、5之類的后綴。你在使用的時候,也建議這樣子命名,便於后面的編程調用。就用以下代碼實現:
CType(Me.FindControl("tbx1"), TextBox).Text=”自定義的Text值”