'How to duplicate (clone) existing Row in Datagridview with Button using C# ASP.NET

I have a DataGridView with a column which with button.

Now I want that with every click on the button the selected row in the DataGridView is copied and inserted directly after the selected row.

I want to duplicate all value of all columns and insert into table of my database this new row.

How can I realize this ?

Many thanks in advance.

On my code below the error is on this line

cgv.Rows.Add(gvRow.Cells[1].Text);

<asp:GridView runat="server" ID="gvCustomers" AutoGenerateColumns="false"
    OnSelectedIndexChanged="OnSelectedIndexChanged">
    <Columns>

<asp:TemplateField ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
    <asp:ImageButton ID="btselect" runat="server"
         CommandName="Select"
         OnClick="Copy"
         ImageUrl="/aspnet/img/clone_icon.gif"
         ToolTip="Clone row" />
    </ItemTemplate>
</asp:TemplateField>    
    <asp:BoundField DataField="CustomerId" HeaderText="ID" />    
</Columns>
</asp:GridView>

    protected void Copy(object sender, EventArgs e)
    {
        GridViewRow gvRow = this.gvProducts.SelectedRow;
        DataTable cgv = null;
        if (ViewState["Customers"] != null)
        {
            cgv = ViewState["Customers"] as DataTable;
            cgv.Rows.Add(gvRow.Cells[1].Text);
            ViewState["Customers"] = cgv;
        }

        BindData();
    }

    protected void gvProducts_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.gvProducts.SelectedRow.BackColor = System.Drawing.Color.Cyan;
    }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source