locked
delete in bulk RRS feed

  • Question

  • User-807418713 posted

    Hello

    This is my gridview code

     protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            ((DataTable)ViewState["KKJJHHVVNEW"]).Rows[e.RowIndex].Delete();
            ((DataTable)ViewState["KKJJHHVVNEW"]).AcceptChanges();
    
            if (((DataTable)ViewState["KKJJHHVVNEW"]).Rows.Count > 0)
            {
    
                GridView1.DataSource = (DataTable)ViewState["KKJJHHVVNEW"];
                GridView1.DataBind();
            }
            else
            {
                BindGridView();
    
                GridView1.Visible = false;
    
            }
        }

    the above code is working fine for each row delete it cause lot of time for user

    Now i want to set checkbox which ever checkbox i checked and then pressing delete button it should delete all records which is checked.. how to do 

    Thanking you

    Sunday, February 28, 2021 6:55 PM

Answers

  • User-1330468790 posted

    Hi Gopi.MCA,

     

    I can only provide you with an idea about how to implement such a functionality since I have no idea about your data source and how you bind the data to the grid view.

    • Add one CheckBox control in each row with default value Checked="false"
    • Add One Button control in the page to trigger a Click event
    • In the Click event handler, you could traverse the rows of the grid view and check if the check box is checked or not
    • If it is checked, then delete the row from data table/database with an identifier (id).

    More details, you could refer to below codes.

    aspx:

     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
                    <Columns>
                        <asp:TemplateField HeaderText="Check to Delete">
                            <ItemTemplate>
                                <asp:CheckBox ID="deleteCB" runat="server" Checked="false" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="ID">
                            <ItemTemplate>
                                <asp:Label ID="idLbl" runat="server" Text='<%#Eval("ID") %>'  />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Name">
                            <ItemTemplate>
                               <asp:Label ID="nameLbl" runat="server" Text='<%#Eval("Name") %>'  />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
                <asp:Button ID="deleteBtn" runat="server" Text="Delete Selected Row" OnClick="deleteBtn_Click" />

    Code behind:

    // Simulation of the database
            private static DataTable _gridviewDT;
            public static DataTable GridviewDT
            {
                get
                {
                    if (_gridviewDT is null)
                    {
                        _gridviewDT = new DataTable();
    
                        _gridviewDT.Columns.Add("ID", typeof(int));
                        _gridviewDT.Columns.Add("Name", typeof(string));
    
                        _gridviewDT.Rows.Add(1, "Name-1");
                        _gridviewDT.Rows.Add(2, "Name-2");
                        _gridviewDT.Rows.Add(3, "Name-3");
                        _gridviewDT.Rows.Add(4, "Name-4");
                        _gridviewDT.Rows.Add(5, "Name-5");
                        _gridviewDT.Rows.Add(6, "Name-6");
                        _gridviewDT.Rows.Add(7, "Name-7");
    
                    }
    
                    return _gridviewDT;
                }
                set
                {
                    _gridviewDT = value;
                }
            }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    BindGridView();
                }
            }
    
            protected void BindGridView()
            {
                GridView1.DataSource = GridviewDT;
                GridView1.DataBind();
            }
    
            protected void deleteBtn_Click(object sender, EventArgs e)
            {
                // If grid view contains rows
                if(GridView1.Rows.Count > 0)
                {
                    // Check every row to check if the check box is checked. If checked, delete, otherwise, check next til the end
                    foreach(GridViewRow row in GridView1.Rows)
                    {
                        CheckBox cb = (CheckBox)row.FindControl("deleteCB");
    
                        if (cb.Checked)
                        {
                            // use id to delete row
                            Label idLbl = (Label)row.FindControl("idLbl");
                            string id = idLbl.Text;
    
                            List<DataRow> rowsToDelete = new List<DataRow>();
    
                            // Mark the rows which should be deleted
                            foreach (DataRow dr in GridviewDT.Rows)
                            {
                                if (dr["ID"].ToString().Equals(id))
                                {
                                    rowsToDelete.Add(dr);
                                }
                            }
    
                            // Delete these rows
                            foreach (DataRow dr in rowsToDelete)
                            {
                                GridviewDT.Rows.Remove(dr);
                            }
    
                        }
                    }
    
                    // Rebind the grid view
                    BindGridView();
    
                }
            }

    Demo:

     

    Hope helps.

    Best regards,

    Sean

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Monday, March 1, 2021 2:57 AM