Click here to Skip to main content
15,887,871 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
Created gridview in asp.net c#.Adding each row with button click .now i want to create child rows for particular row. like 1.1,1.2...while clicking add button (in each row).how to do it?

What I have tried:

Front end
ASP.NET
 <asp:gridview ID="Gridview1" runat="server" ShowFooter="true" 
        AutoGenerateColumns="false" >
        <Columns>
        <asp:BoundField DataField="RowNumber" HeaderText="Row Number" />
        <asp:TemplateField HeaderText="Col 1">
            <ItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Col 2">
            <ItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Col 3">
            <ItemTemplate>
                 <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
            </ItemTemplate>
             </asp:TemplateField>
                <asp:TemplateField >
            <ItemTemplate>
                 <asp:LinkButton ID="Link1" runat="server">Add</asp:LinkButton>
            </ItemTemplate>
            
            
            <FooterStyle HorizontalAlign="Right" />
            <FooterTemplate>
             <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" OnClick="ButtonAdd_Click" />
            </FooterTemplate>
        </asp:TemplateField>
        </Columns>
</asp:gridview>


code behind
C#
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++)
                    {
                        //extract the TextBox values
                        TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1");
                        TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
                        TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");

                        drCurrentRow = dtCurrentTable.NewRow();
                        drCurrentRow["RowNumber"] = i + 1;

                        dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
                        dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
                        dtCurrentTable.Rows[i - 1]["Column3"] = box3.Text;

                        rowIndex++;
                    }
                    dtCurrentTable.Rows.Add(drCurrentRow);
                    ViewState["CurrentTable"] = dtCurrentTable;

                    Gridview1.DataSource = dtCurrentTable;
                    Gridview1.DataBind();
                }
            }
            else
            {
                Response.Write("ViewState is null");
            }
            SetPreviousData();
        }
Posted
Updated 14-Jun-17 2:34am
Comments
[no name] 13-Jun-17 10:48am    
You probably need nested grid if you need to have child rows for particular rows.
Maciej Los 13-Jun-17 10:57am    
My virtual 5!
GrpSMK 14-Jun-17 1:22am    
How to add ID like 1.1,1.2 in child rows?

1 solution

As said you cannot add child rows for rows in Gridview control. You need to add new grid for each row you want to have child rows. Refer below link it should give you idea.

Nested GridView Example in ASP.Net using C# and VB.Net[^]
 
Share this answer
 
Comments
GrpSMK 15-Jun-17 1:06am    
yea like this but in nested grid how to add id based on parent id..If parent id is 1 means how to add nested grid rows id 1.1,1.2 like that

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900