Hi andrew.pun,
Please take reference the below code and correct your code
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Delete Selected Records from Gridview Example</title>
<script type="text/javascript">
function ConfirmDelete() {
var count = document.getElementById("<%=hfCount.ClientID %>").value;
var gv = document.getElementById("<%=gvCustomers.ClientID%>");
var chk = gv.getElementsByTagName("input");
for (var i = 0; i < chk.length; i++) {
if (chk[i].checked && chk[i].id.indexOf("chkAll") == -1) {
count++;
}
}
if (count == 0) {
alert("No records to delete.");
return false;
}
else {
return confirm("Do you want to delete " + count + " records.");
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" />
<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false" Font-Names="Arial"
Font-Size="11pt" AlternatingRowStyle-BackColor="#C2D69B" HeaderStyle-BackColor="green"
AllowPaging="true" OnPageIndexChanging="OnPaging" DataKeyNames="CustomerID" PageSize="10">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" onclick="checkAll(this);" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chk" runat="server" onclick="Check_Click(this)" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField ItemStyle-Width="150px" DataField="CustomerId" HeaderText="CustomerId" />
<asp:BoundField ItemStyle-Width="150px" DataField="Name" HeaderText="Contact Name" />
<asp:BoundField ItemStyle-Width="150px" DataField="Country" HeaderText="Country" />
</Columns>
<AlternatingRowStyle BackColor="#C2D69B" />
</asp:GridView>
<asp:HiddenField ID="hfCount" runat="server" Value="0" />
<asp:Button ID="btnDelete" runat="server" Text="Delete Checked Records" OnClientClick="return ConfirmDelete();"
OnClick="btnDelete_Click" />
</div>
</form>
</body>
</html>
Namespaces
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Text;
VB.Net
Imports System.Data.SqlClient
Imports System.Data
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
GetData();
BindGrid();
gvCustomers.Visible = false;
}
protected void btnSearch_Click(object sender, EventArgs e)
{
string conStr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand("SELECT CustomerId, Name, Country FROM Customers WHERE Name LIKE @Name + '%'", con))
{
cmd.Parameters.AddWithValue("@Name", txtName.Text.Trim());
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
sda.Fill(dt);
gvCustomers.DataSource = dt;
gvCustomers.DataBind();
gvCustomers.Visible = true;
}
}
}
}
private void BindGrid()
{
string constr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
string query = "select * from Customers";
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlDataAdapter sda = new SqlDataAdapter(query, con))
{
DataTable dt = new DataTable();
sda.Fill(dt);
gvCustomers.DataSource = dt;
gvCustomers.DataBind();
}
}
}
protected void OnPaging(object sender, GridViewPageEventArgs e)
{
gvCustomers.PageIndex = e.NewPageIndex;
gvCustomers.DataBind();
SetData();
}
private void GetData()
{
ArrayList arr;
if (ViewState["SelectedRecords"] != null)
arr = (ArrayList)ViewState["SelectedRecords"];
else
arr = new ArrayList();
CheckBox chkAll = (CheckBox)gvCustomers.HeaderRow.Cells[0].FindControl("chkAll");
for (int i = 0; i < gvCustomers.Rows.Count; i++)
{
if (chkAll.Checked)
{
if (!arr.Contains(gvCustomers.DataKeys[i].Value))
{
arr.Add(gvCustomers.DataKeys[i].Value);
}
}
else
{
CheckBox chk = (CheckBox)gvCustomers.Rows[i].Cells[0].FindControl("chk");
if (chk.Checked)
{
if (!arr.Contains(gvCustomers.DataKeys[i].Value))
{
arr.Add(gvCustomers.DataKeys[i].Value);
}
}
else
{
if (arr.Contains(gvCustomers.DataKeys[i].Value))
{
arr.Remove(gvCustomers.DataKeys[i].Value);
}
}
}
}
ViewState["SelectedRecords"] = arr;
}
private void SetData()
{
int currentCount = 0;
CheckBox chkAll = (CheckBox)gvCustomers.HeaderRow.Cells[0].FindControl("chkAll");
chkAll.Checked = true;
ArrayList arr = (ArrayList)ViewState["SelectedRecords"];
for (int i = 0; i < gvCustomers.Rows.Count; i++)
{
CheckBox chk = (CheckBox)gvCustomers.Rows[i].Cells[0].FindControl("chk");
if (chk != null)
{
chk.Checked = arr.Contains(gvCustomers.DataKeys[i].Value);
if (!chk.Checked)
chkAll.Checked = false;
else
currentCount++;
}
}
hfCount.Value = (arr.Count - currentCount).ToString();
}
protected void btnDelete_Click(object sender, EventArgs e)
{
int count = 0;
SetData();
gvCustomers.AllowPaging = false;
gvCustomers.DataBind();
ArrayList arr = (ArrayList)ViewState["SelectedRecords"];
count = arr.Count;
for (int i = 0; i < gvCustomers.Rows.Count; i++)
{
if (arr.Contains(gvCustomers.DataKeys[i].Value))
{
DeleteRecord(gvCustomers.DataKeys[i].Value.ToString());
arr.Remove(gvCustomers.DataKeys[i].Value);
}
}
ViewState["SelectedRecords"] = arr;
hfCount.Value = "0";
gvCustomers.AllowPaging = true;
BindGrid();
ShowMessage(count);
}
private void DeleteRecord(string CustomerID)
{
string constr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
string query = "delete from Customers where CustomerID=@CustomerID";
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@CustomerID", CustomerID);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
private void ShowMessage(int count)
{
StringBuilder sb = new StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("alert('");
sb.Append(count.ToString());
sb.Append(" records deleted.');");
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "script", sb.ToString());
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If IsPostBack Then GetData()
BindGrid()
gvCustomers.Visible = False
End Sub
Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim conStr As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
Using con As SqlConnection = New SqlConnection(conStr)
Using cmd As SqlCommand = New SqlCommand("SELECT CustomerId, Name, Country FROM Customers WHERE Name LIKE @Name + '%'", con)
cmd.Parameters.AddWithValue("@Name", txtName.Text.Trim())
Using sda As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
sda.Fill(dt)
gvCustomers.DataSource = dt
gvCustomers.DataBind()
gvCustomers.Visible = True
End Using
End Using
End Using
End Sub
Private Sub BindGrid()
Dim constr As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
Dim query As String = "select * from Customers"
Using con As SqlConnection = New SqlConnection(constr)
Using sda As SqlDataAdapter = New SqlDataAdapter(query, con)
Dim dt As DataTable = New DataTable()
sda.Fill(dt)
gvCustomers.DataSource = dt
gvCustomers.DataBind()
End Using
End Using
End Sub
Protected Sub OnPaging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
gvCustomers.PageIndex = e.NewPageIndex
gvCustomers.DataBind()
SetData()
End Sub
Private Sub GetData()
Dim arr As ArrayList
If ViewState("SelectedRecords") IsNot Nothing Then
arr = CType(ViewState("SelectedRecords"), ArrayList)
Else
arr = New ArrayList()
End If
Dim chkAll As CheckBox = CType(gvCustomers.HeaderRow.Cells(0).FindControl("chkAll"), CheckBox)
For i As Integer = 0 To gvCustomers.Rows.Count - 1
If chkAll.Checked Then
If Not arr.Contains(gvCustomers.DataKeys(i).Value) Then
arr.Add(gvCustomers.DataKeys(i).Value)
End If
Else
Dim chk As CheckBox = CType(gvCustomers.Rows(i).Cells(0).FindControl("chk"), CheckBox)
If chk.Checked Then
If Not arr.Contains(gvCustomers.DataKeys(i).Value) Then
arr.Add(gvCustomers.DataKeys(i).Value)
End If
Else
If arr.Contains(gvCustomers.DataKeys(i).Value) Then
arr.Remove(gvCustomers.DataKeys(i).Value)
End If
End If
End If
Next
ViewState("SelectedRecords") = arr
End Sub
Private Sub SetData()
Dim currentCount As Integer = 0
Dim chkAll As CheckBox = CType(gvCustomers.HeaderRow.Cells(0).FindControl("chkAll"), CheckBox)
chkAll.Checked = True
Dim arr As ArrayList = CType(ViewState("SelectedRecords"), ArrayList)
For i As Integer = 0 To gvCustomers.Rows.Count - 1
Dim chk As CheckBox = CType(gvCustomers.Rows(i).Cells(0).FindControl("chk"), CheckBox)
If chk IsNot Nothing Then
chk.Checked = arr.Contains(gvCustomers.DataKeys(i).Value)
If Not chk.Checked Then
chkAll.Checked = False
Else
currentCount += 1
End If
End If
Next
hfCount.Value = (arr.Count - currentCount).ToString()
End Sub
Protected Sub btnDelete_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim count As Integer = 0
SetData()
gvCustomers.AllowPaging = False
gvCustomers.DataBind()
Dim arr As ArrayList = CType(ViewState("SelectedRecords"), ArrayList)
count = arr.Count
For i As Integer = 0 To gvCustomers.Rows.Count - 1
If arr.Contains(gvCustomers.DataKeys(i).Value) Then
DeleteRecord(gvCustomers.DataKeys(i).Value.ToString())
arr.Remove(gvCustomers.DataKeys(i).Value)
End If
Next
ViewState("SelectedRecords") = arr
hfCount.Value = "0"
gvCustomers.AllowPaging = True
BindGrid()
ShowMessage(count)
End Sub
Private Sub DeleteRecord(ByVal CustomerID As String)
Dim constr As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
Dim query As String = "delete from Customers where CustomerID=@CustomerID"
Using con As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand(query, con)
cmd.Parameters.AddWithValue("@CustomerID", CustomerID)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Using
End Sub
Private Sub ShowMessage(ByVal count As Integer)
Dim sb As StringBuilder = New StringBuilder()
sb.Append("<script type = 'text/javascript'>")
sb.Append("alert('")
sb.Append(count.ToString())
sb.Append(" records deleted.');")
sb.Append("</script>")
ClientScript.RegisterStartupScript(Me.[GetType](), "script", sb.ToString())
End Sub
Screenshot
