Use following code:-
<div>
<asp:Label ID="lblRowReq" Text="Required rows:" runat="server"></asp:Label>
<asp:TextBox ID="txtRowReq" runat="server"></asp:TextBox>
<asp:Button ID="btnRowGenrate" runat="server" Text="Generate Row"
onclick="btnRowGenrate_Click" />
</div>
<div>
<asp:gridview ID="gvGenrateRow" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Normal Text1">
<ItemTemplate>
<asp:TextBox ID="TextBox0" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Normal Text2">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Normal Text3">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Multiline Text">
<ItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" TextMode="MultiLine"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DropdownList">
<ItemTemplate>
<asp:DropDownList ID="ddlCategory" runat="server">
<asp:ListItem Text="A"></asp:ListItem>
<asp:ListItem Text="D"></asp:ListItem>
<asp:ListItem Text="B"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>
</div>
and on .cs page use this:
private void SetFirstRow()
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("Column0", typeof(string)));
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add(new DataColumn("Column3", typeof(string)));
dt.Columns.Add(new DataColumn("Column4", typeof(string)));
dr = dt.NewRow();
dr["Column0"] = string.Empty;
dr["Column1"] = string.Empty;
dr["Column2"] = string.Empty;
dr["Column3"] = string.Empty;
dr["Column4"] = string.Empty;
dt.Rows.Add(dr);
ViewState["CurrentTable"] = dt;
gvGenrateRow.DataSource = dt;
gvGenrateRow.DataBind();
}
protected void btnRowGenrate_Click(object sender, EventArgs e)
{
SetFirstRow();
for (int i = 0; i < Convert.ToInt32(txtRowReq.Text)-1; i++)
AddNewRowToGrid();
}
private void AddNewRowToGrid()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
TextBox box0 = (TextBox)gvGenrateRow.Rows[rowIndex].Cells[0].FindControl("TextBox0");
TextBox box1 = (TextBox)gvGenrateRow.Rows[rowIndex].Cells[1].FindControl("TextBox1");
TextBox box2 = (TextBox)gvGenrateRow.Rows[rowIndex].Cells[2].FindControl("TextBox2");
TextBox box3 = (TextBox)gvGenrateRow.Rows[rowIndex].Cells[3].FindControl("TextBox3");
DropDownList ddl4 = (DropDownList)gvGenrateRow.Rows[rowIndex].Cells[4].FindControl("ddlCategory");
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["Column0"] = box0.Text;
drCurrentRow["Column1"] = box1.Text;
drCurrentRow["Column2"] = box2.Text;
drCurrentRow["Column3"] = box3.Text;
drCurrentRow["Column4"] = ddl4.Text;
rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
gvGenrateRow.DataSource = dtCurrentTable;
gvGenrateRow.DataBind();
}
}
}
if you try to solve your problem step by step then its more better,so first step is completed now try for next....happy coding:-) jmd.