Here i have used Table
Ref:
Creating Dynamic TextBox Controls in ASP.Net
HTML
<form id="form1" runat="server">
<table id="Table1" runat="server">
</table>
<asp:Button ID="Button1" Text="Save" OnClick="Save" runat="server" />
</form>
Namespace
using System.Web.UI.HtmlControls;
HtmlTable tblTextBoxes;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Save(object sender, EventArgs e)
{
string value = string.Empty;
for (int i = 0; i < this.Table1.Rows.Count; i++)
{
value += (this.Table1.Rows[i].Cells[0].Controls[0] as TextBox).Text + ",";
}
string[] textboxes = value.Remove(value.Length - 1).Split(',');
}
protected void Page_PreInit(object sender, EventArgs e)
{
//Create a Dynamic Panel
tblTextBoxes = new HtmlTable();
tblTextBoxes.ID = "pnlTextBox";
//tblTextBoxes.BorderWidth = 1;
//tblTextBoxes.Width = 300;
this.form1.Controls.Add(tblTextBoxes);
//Create a LinkDynamic Button to Add TextBoxes
LinkButton btnAddtxt = new LinkButton();
btnAddtxt.ID = "btnAddTxt";
btnAddtxt.Text = "Add TextBox";
btnAddtxt.Click += new System.EventHandler(btnAdd_Click);
this.form1.Controls.Add(btnAddtxt);
//Recreate Controls
RecreateControls("txtDynamic", "TextBox");
}
protected void btnAdd_Click(object sender, EventArgs e)
{
int cnt = FindOccurence("txtDynamic");
CreateTextBox("txtDynamic-" + Convert.ToString(cnt + 1));
}
private int FindOccurence(string substr)
{
string reqstr = Request.Form.ToString();
return ((reqstr.Length - reqstr.Replace(substr, "").Length) / substr.Length);
}
private void RecreateControls(string ctrlPrefix, string ctrlType)
{
string[] ctrls = Request.Form.ToString().Split('&');
int cnt = FindOccurence(ctrlPrefix);
if (cnt > 0)
{
for (int k = 1; k <= cnt; k++)
{
for (int i = 0; i < ctrls.Length; i++)
{
if (ctrls[i].Contains(ctrlPrefix + "-" + k.ToString()) && !ctrls[i].Contains("EVENTTARGET"))
{
string ctrlID = ctrls[i].Split('=')[0];
if (ctrlType == "TextBox")
{
CreateTextBox(ctrlID);
}
break;
}
}
}
}
}
private void CreateTextBox(string ID)
{
TextBox txt = new TextBox();
txt.ID = ID;
txt.AutoPostBack = true;
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell = new HtmlTableCell();
Literal lt = new Literal();
lt.Text = "<br />";
cell.Controls.Add(txt);
cell.Controls.Add(lt);
row.Cells.Add(cell);
Table1.Rows.Add(row);
}