Here is a very Simple sample in which I have created a Page and UserControl.
UserControl contains the TextBoxes and the dynamically added UserControls are maintained using Session.
Page
HTML
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src = "~/UC_TextBoxes.ascx" TagName = "TextBoxes" TagPrefix = "uc" %>
<!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></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button Text="AddDigger" runat="server" OnClick = "AddDigger" />
<asp:Button Text="RemoveDigger" runat="server" OnClick = "RemoveDigger" />
<hr />
<asp:Panel ID = "Panel1" runat="server">
</asp:Panel>
</form>
</body>
</html>
Code
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
List<UC_TextBoxes> textBoxes = GetSessionControls();
foreach (UC_TextBoxes textBox in textBoxes)
{
Panel1.Controls.Add(textBox);
}
}
}
protected void AddDigger(object sender, EventArgs e)
{
UC_TextBoxes ucDigger = (UC_TextBoxes)LoadControl("~/UC_TextBoxes.ascx"); ;
ucDigger.ID = Guid.NewGuid().ToString();
List<UC_TextBoxes> textBoxes = GetSessionControls();
textBoxes.Add(ucDigger);
Panel1.Controls.Add(ucDigger);
textBoxes.Add(ucDigger);
Session["UserControls"] = textBoxes;
}
private List<UC_TextBoxes> GetSessionControls()
{
List<UC_TextBoxes> textBoxes;
if (Session["UserControls"] == null)
{
textBoxes = new List<UC_TextBoxes>();
}
else
{
textBoxes = (List<UC_TextBoxes>)Session["UserControls"];
}
return textBoxes;
}
UserControl
HTML
<div id="addOperators" class="form-group" runat="server">
<table class="table">
<tr>
<td><asp:TextBox ID="txtName1" runat="server" CssClass="form-control" placeholder="Operator Name" Width="90px"></asp:TextBox></td>
<td><asp:TextBox ID="txtEmpNo1" runat="server" CssClass="form-control" placeholder="Operator Emp No" Width="90px"></asp:TextBox></td>
<td><asp:TextBox ID="txtST1" runat="server" CssClass="form-control" placeholder="Operator ST" Width="90px"></asp:TextBox></td>
<td><asp:TextBox ID="txtOT1" runat="server" CssClass="form-control" placeholder="Operator OT" Width="90px"></asp:TextBox></td>
</tr>
<tr>
<td><asp:TextBox ID="txtShift1" runat="server" CssClass="form-control" placeholder="Shift" Width="90px"></asp:TextBox></td>
<td><asp:TextBox ID="txtTravelTime1" runat="server" CssClass="form-control" placeholder="Travel Time" Width="90px"></asp:TextBox></td>
<td><asp:TextBox ID="txtTravelRate1" runat="server" CssClass="form-control" placeholder="Travel Rate" Width="90px"></asp:TextBox></td>
<td><asp:TextBox ID="txtPerDiem1" runat="server" CssClass="form-control" placeholder="Per Diem" Width="90px"></asp:TextBox></td>
</tr>
</table>
</div>