Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
'Initiate the counter of dynamically added controls
Me.NumOfControls = 0
Else
'Controls must be repeatedly be created on postback
Me.ReCreateControls()
End If
End Sub
Protected Sub CreateButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CreateButton.Click
For i As Integer = 1 To Convert.ToInt32(NumberOfControls.Text)
AddNewControl()
Next
End Sub
Protected Property NumOfControls() As Integer
Get
Return CType(ViewState("NumOfControls"), Integer)
End Get
Set(ByVal value As Integer)
ViewState("NumOfControls") = value
End Set
End Property
Private Sub ReCreateControls()
For i As Integer = 1 To Me.NumOfControls
Dim newlabel As New Label
newlabel.ID = "Label" & i
newlabel.Text = "New Label No. " & i
Dim newtextbox As New TextBox
newtextbox.ID = "TextBox" & i
newtextbox.Text = ""
Container.Controls.Add(newlabel)
Container.Controls.Add(newtextbox)
Container.Controls.Add(New LiteralControl("<br /><br />"))
Next
End Sub
Private Sub AddNewControl()
Dim newlabel As New Label
newlabel.ID = "Label" & (NumOfControls + 1).ToString
newlabel.Text = "New Label No. " & (NumOfControls + 1).ToString
Dim newtextbox As New TextBox
newtextbox.ID = "TextBox" & (NumOfControls + 1).ToString
newtextbox.Text = ""
Container.Controls.Add(newlabel)
Container.Controls.Add(newtextbox)
Container.Controls.Add(New LiteralControl("<br /><br />"))
Me.NumOfControls += 1
End Sub
''' <summary>
''' Gets value from the dinamically created TextBox controls
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub GetValueButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles GetValueButton.Click
Dim TBox As TextBox = CType(Container.FindControl("TextBox1"), TextBox)
If TBox IsNot Nothing Then
Response.Write(TBox.Text)
End If
End Sub