Introduction
This articles illustrates how to create multiple rows of controls in an asp.net web page dynamically using C# code with the help of a Panel, table, Session and ViewState.
Details
Here I am using a panel as a place holder for the table.
First, I am adding a textbox to a cell and a checkbox to another cell, and then I am adding these two cells to a row of the table.
Here, I am using Session variable to store the state of the table which will be used after postback to restore the state of the table. Here, we can't use viewstate for storing the state of the table. I am using a ViewState variable to hold the state of the counter which store the number of the controls already created.
I am giving unique id for the textboxes and the checkboxes with the help of this counter.
Note - If we do not store the state of the table and the counter then the values of counter will be lost after the postback and also the state of the table will be lost after the postback.
Look at the code given below, it is very simple !!
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default :
System.Web.UI.Page
{
private int
numOfColumns = 1;
private int ctr = 0;
Table table = null;
protected void
Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
table = new Table();
table.ID = "tableBuild";
Session["table"] = table;
ViewState["ctr"] = ctr;
}
ctr = (Int32)ViewState["ctr"];
table = (Table)Session["table"];
Panel1.Controls.Add(table);
}
private void
GenerateTable(int colsCount)
{
ctr++;
TableRow row = new TableRow();
TableCell cell = new TableCell();
TextBox tb = new TextBox();
tb.ID = "TextBoxRow_"
+ ctr;
tb.Width
= 80;
// Add the control to the TableCell
cell.Controls.Add(tb);
// Add the TableCell to the TableRow
row.Cells.Add(cell);
TableCell cell1 = new
TableCell();
CheckBox cb = new CheckBox();
cb.ID = "chkBox" + ctr;
cb.Width =
40;
// Add the control to the TableCell
cell1.Controls.Add(cb);
// Add the TableCell to the TableRow
row.Cells.Add(cell1);
// Add the TableRow to the Table
table.Rows.Add(row);
Session["table"] = table;
ViewState["ctr"] = ctr;
}
protected void
btnAdd_Click(object sender, EventArgs e)
{
numOfColumns =
1;
//Generate the Table based from the inputs
GenerateTable(numOfColumns);
}
}
All the queries are welcome!!