I. Declare following globally:-
DataTable mdtDescriptorText;
DataColumn objDcGetColoumns = new DataColumn();
DataRow objDrGetColoumns;
II. Create DataTable for Grid:
private DataTable CreateDataTable()
{
DataColumn col;
mdtDescriptorText = new DataTable();
col = new DataColumn("Column-1");
mdtDescriptorText.Columns.Add(col);
col = new DataColumn("Column-2");
mdtDescriptorText.Columns.Add(col);
col = new DataColumn("Column-3");
mdtDescriptorText.Columns.Add(col);
return (mdtDescriptorText);
}
III. Bind DataTable to GridView:
private void AddNewRow(int intRowNumber)
{
for (int i = 0; i < intRowNumber; i++)
{
objDrGetColoumns = mdtDescriptorText.NewRow();
mdtDescriptorText.Rows.Add(objDrGetColoumns);
}
gridRow.DataSource = mdtDescriptorText.DefaultView;
gridRow.DataBind();
}
IV. Now On Button click:
protected void btnAddRow_Click(object sender, EventArgs e)
{
CreateDataTable();
foreach (GridViewRow gridItems in gridRow.Rows)
{
objDrGetColoumns = mdtDescriptorText.NewRow();
TextBox txtBox1 = (TextBox)gridItems.FindControl("txtBox1");
TextBox txtBox2 = (TextBox)gridItems.FindControl("txtBox2");
TextBox txtBox3 = (TextBox)gridItems.FindControl("txtBox3");
objDrGetColoumns["Column-1"] = txtBox1.Text;
objDrGetColoumns["Column-2"] = txtBox2.Text;
objDrGetColoumns["Column-3"] = txtBox3.Text;
mdtDescriptorText.Rows.Add(objDrGetColoumns);
}
AddNewRow(1);
}
Here is your GridView:-
<asp:GridView ID="gridRow" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Column-1">
<ItemTemplate>
<asp:TextBox ID="txtBox1" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Column-2">
<ItemTemplate>
<asp:TextBox ID="txtBox2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Column-3">
<ItemTemplate>
<asp:TextBox ID="txtBox3" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnAddRow" runat="server" Text="Add Row" OnClick="btnAddRow_Click" />
Good luck.