Answered by:
delete in bulk

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