|
How to delete multiple selected records from the GridView?
by: Itfunda
Product Type: Tips and Tricks (Books)
Technologies: ASP.NET GridView
To delete multiple selected records from the GridView, we can follow this approach.
ASPX Page
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true" DataKeyNames="AutoId">
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="AutoId" DataField="AutoId" />
<asp:BoundField HeaderText="First Name" DataField="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" />
<asp:TemplateField HeaderText="Is Active?">
<ItemTemplate>
<%# Eval("Active").ToString().Equals("True") ? "Yes" : "No" %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<p><asp:Button ID="btnDelete" runat="server" Text="Delete Selected Records" OnClick="DeleteSelectedRecords" /></p>
Code Behind
string _connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.GetData();
}
}
private void GetData()
{
DataTable table = new DataTable();
// get the connection
using (SqlConnection conn = new SqlConnection(_connStr))
{
// write the sql statement to execute
string sql = "SELECT AutoId, FirstName, LastName, Age, Active FROM PersonalDetail ORDER By AutoId";
// instantiate the command object to fire
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
// get the adapter object and attach the command object to it
using (SqlDataAdapter ad = new SqlDataAdapter(cmd))
{
// fire Fill method to fetch the data and fill into DataTable
ad.Fill(table);
}
}
}
GridView1.DataSource = table;
GridView1.DataBind();
}
protected void DeleteSelectedRecords(object sender, EventArgs e)
{
Response.Write("<h3>Selected records</h3>");
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox chk = (CheckBox)row.FindControl("chkSelect");
if (chk.Checked)
{
int autoId = int.Parse(GridView1.DataKeys[row.RowIndex].Value.ToString());
// get the selected AutoId and cells text
Response.Write("<p>AutoId: " + autoId + " deleted</p>");
// fire your DELETE method from BAL or service layer
using (SqlConnection conn = new SqlConnection(_connStr))
{
string sql = "Delete from PersonalDetail" +
" where AutoId = @AutoId";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@AutoId", autoId);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
}
// repopulate the fresh data
this.GetData();
}
In the above code snippet, we have a GridView that is almost similar to “MultipleSelection.aspx” page. The first column’s checkbox is used to select the record. On click of “Delete Selected Records” button we have attached “DeleteSelectedRecords ” server side method that loops through the rows of the GridView and finds the checbox, if the checkbox is checked then that record is deleted from the database using ADO.NET code and then using GetData() method the record is re-populated to the GridView.
OUTPUT
|