Button click -> add div with text boxes.

Hello,

I would like it so if a click my add button
    <asp:ImageButton id="addButton" src="images/add.PNG" OnClientClick="return false;"  class="addButton" runat="server" />

Open in new window

. It will show the below code
   <label class="alignme"  for="repdist1">Rep1 - </label>
     <label  for="repdist1">Distance:</label>
     <input  onkeypress="return IsNumber(event)" name="repdist1" type="text" id="repsit1" style="width:30px;" />
     <select name="kmormile1" id="kmormile1">
     	<option value="Miles">Miles</option>
        	<option value="Km">Km</option>
            </select>
                       <label for="repmin1">Min:</label>
                     <input onkeypress="return IsNumber(event)" name="repmin1" type="text" value="00" maxlength="2" id="repmin1" style="width:30px;" />
                     
                       <label for="repsec1">Sec:</label>
                     <input onkeypress="return IsNumber(event)" name="repsec1" type="text" value="00" maxlength="2" id="repsec1" style="width:30px;" />
      
       

Open in new window


each time a user clicks the button it adds a new row and if the user clicks the delete button
          <asp:ImageButton id="removeButton" class="removeButton" src="images/close_square.PNG" OnClientClick="return false;"   runat="server" />

Open in new window


it deletes a row.

I can do this in javascript but i would really like to do it in vb.net
runnerjp2005Asked:
Who is Participating?
 
Roopesh ReddyConnect With a Mentor IT AnalystCommented:
Hi,

Check the below code -
<div runat="server" id="container">
        
    </div>

    <asp:Button ID="btnAdd" Text="Add Row" runat="server" OnClick="RowHandler" />
    <asp:Button ID="btnDelete" Text="Delete Row" runat="server" OnClick="RowHandler" />


Protected Sub RowHandler(sender As Object, e As EventArgs)
	Dim b As Button = TryCast(sender, Button)
	Dim lControls As New List(Of Control)()

	If b.ID = "btnAdd" Then
		If Session("controls") IsNot Nothing Then
			lControls = TryCast(Session("controls"), List(Of Control))
			For Each ctrl As Control In lControls
				container.Controls.Add(ctrl)
			Next

			Dim text As New TextBox()
			container.Controls.Add(text)
			lControls.Add(text)
			Session("controls") = lControls
		Else
			Dim text As New TextBox()
			container.Controls.Add(text)
			lControls.Add(text)
			Session("controls") = lControls
		End If
	End If
	'end:btnAdd if
	If b.ID = "btnDelete" Then
		If Session("controls") IsNot Nothing Then
			lControls = TryCast(Session("controls"), List(Of Control))

			If lControls.Count > 0 Then
				Dim ctrl As Control = TryCast(lControls(lControls.Count - 1), Control)
				container.Controls.Remove(ctrl)
				lControls.Remove(ctrl)
				Session("controls") = lControls

				For Each ctrls As Control In lControls
					container.Controls.Add(ctrls)
				Next

			End If

		End If
	End If
	'end:btnDelete if
End Sub

Open in new window


It's the sample code, to give you an idea to design it according to your need!

I basically wrote in C# and i converted it to VB. I think event handling is different in VB, but the logic inside the handler is same :)

Hope it helps u...
0
 
CodeCruiserCommented:
I wonder why you do not use a control like a GridView or a Repeater instead of adding/deleting rows of textboxes. In this case, you can use a repeater bound to a datatable and add/delete rows in datatable and repeater would automatically show new rows.
0
 
runnerjp2005Author Commented:
Its because its a form to fill in.
Basically its a training log and this has several fields.
I have a requirement where i have a rep field where a person could enter multiple reps e.g

rep1
rep2
rep3

so the button allows the user to enter more reps if need be.
0
 
runnerjp2005Author Commented:
0
All Courses

From novice to tech pro — start learning today.