Below given is an example to achive the same.
Code for .aspx Page
//---------------------
<asp:Button runat="server" ID="btnAddRows" Text="Add New Row"
onclick="btnAddRows_Click" />
<asp:GridView runat="server" ID="grd1" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="COL1" HeaderText="col1" />
<asp:BoundField DataField="COL2" HeaderText="col2"/>
<asp:BoundField DataField="COL3" HeaderText="col3"/>
</Columns>
</asp:GridView>
//---------------------
Code for .cs Page
public DataTable GridData
{
get {
if(ViewState["GridData"]==null)
{
DataTable dt = new DataTable("GridData");
dt.Columns.Add(new DataColumn("COL1"));
dt.Columns.Add(new DataColumn("COL2"));
dt.Columns.Add(new DataColumn("COL3"));
dt.Columns.Add(new DataColumn("COL4"));
ViewState["GridData"] = dt;
return dt;
}
else
return (DataTable)ViewState["GridData"];
}
set { ViewState["GridData"] = value; }
}
protected void btnAddRows_Click(object sender, EventArgs e)
{
DataRow Dr = GridData.NewRow();
Dr["COL1"] = "txt1";
Dr["COL2"] = "txt2";
Dr["COL3"] = "ddl1";
Dr["COL4"] = "ddl2";
GridData.Rows.Add(Dr);
BindGrid();
}
protected void BindGrid()
{
grd1.DataSource = GridData;
grd1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindGrid();
}
}