AspAlliance.com LogoASPAlliance: Articles, reviews, and samples for .NET Developers
URL:
http://aspalliance.com/articleViewer.aspx?aId=1014&pId=-1
CodeSnip: How to Select Record(s) Using Checkboxes and Delete on Confirmation in GridView
page
by Sushila Bowalekar Patel
Feedback
Average Rating: 
Views (Total / Last 10 Days): 36135/ 58

Introduction

We come across situations where we have to select/deselect multiple records or delete them once the user gives confirmation.  This can be done in various ways and using various Data Controls provided in ASP.NET.  For our sample we will use the GridView control. 

Requirement

Visual Studio 2005

Steps

Step 1 – Create User Interface

Let us drag and drop the GridView control.  We will have the headerTemplate with checkbox to select or deselect all or no records respectively.  In the ItemTemplate we will allow the user to select one or many records when he/she checks the checkbox(s).

To select or deselect the records we will use JavaScript.

Listing 1

<asp:GridView ID="GridView1" datakeyname="Employeeid" runat="server" DataSourceID="Sqldatasource1">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
     <asp:CheckBox ID="CheckAll" onclick="return check_uncheck (this );" runat="server" />
</HeaderTemplate>
<ItemTemplate>
    <asp:Label ID="EmpID" Visible="false" 
    Text='<%# DataBinder.Eval (Container.DataItem, "employeeID") %>'
    runat="server" />
    <asp:CheckBox ID="deleteRec" onclick="return check_uncheck (this );"
                                           runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

On the click of the button we will get the confirmation from the user which is as below:

Listing 2

<asp:Button ID="Button1" runat="server" OnClientClick="return confirmMsg(this.form)"
Text="Button" OnClick="Button1_Click" />

We will use the Employees table from Northwind database.  We will set the SqlDataSource as below:

Listing 3

<asp:SqlDataSource ID="Sqldatasource1" runat="server"
 SelectCommand="Select employeeid,firstname,lastname from Employees"            
ConnectionString="Server=localhost;uid=sa;password=;database=Northwind">
</asp:SqlDataSource>

Step 2 – JavaScript

Let us move to the JavaScript part of the code.

We will see the code for the check_uncheck function given in the Checkbox that is in the <HeaderTemplate> and also the <ItemTemplate>.  Explanation is given inline in the code.

Listing 4

function check_uncheck(Val)
{
  var ValChecked = Val.checked;
  var ValId = Val.id;
  var frm = document.forms[0];
  // Loop through all elements
  for (i = 0; i < frm.length; i++)
  {
    // Look for Header Template's Checkbox
    //As we have not other control other than checkbox we just check following statement
    if (this != null)
    {
      if (ValId.indexOf('CheckAll') !=  - 1)
      {
        // Check if main checkbox is checked,
        // then select or deselect datagrid checkboxes
        if (ValChecked)
          frm.elements[i].checked = true;
        else
          frm.elements[i].checked = false;
      }
      else if (ValId.indexOf('deleteRec') !=  - 1)
      {
        // Check if any of the checkboxes are not checked, and then uncheck top select all checkbox
        if (frm.elements[i].checked == false)
          frm.elements[1].checked = false;
      }
    } // if
  } // for// function

Now the Delete confirmation method:

Listing 5

function confirmMsg(frm)
{
  // loop through all elements
  for (i = 0; i < frm.length; i++)
  {
    // Look for our checkboxes only
    if (frm.elements[i].name.indexOf("deleteRec") !=  - 1)
    {
      // If any are checked then confirm alert, otherwise nothing happens
      if (frm.elements[i].checked)
      return confirm('Are you sure you want to delete your selection(s)?')
    }
  }
}

Step 3- Code behind

In the code behind on the click of the button we can code as:

Listing 6

[Visual Basic 2005]

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim gvIDs As String = ""
Dim chkBox As Boolean = False
'Navigate through each row in the GridView for checkbox items
For Each gv As GridViewRow In GridView1.Rows
  Dim deleteChkBxItem As CheckBox = CType(gv.FindControl("deleteRec"), CheckBox)
  If deleteChkBxItem.Checked Then
    chkBox = True
    gvIDs + = CType(gv.FindControl("EmpID"), Label).Text.ToString + ","
  End If
Next
Dim cn As SqlConnection = New SqlConnection(Sqldatasource1.ConnectionString)
If chkBox Then
  Try
  Dim deleteSQL As String = _
 "DELETE from employees WHERE employeeid IN (" + _
 gvIDs.Substring(0, gvIDs.LastIndexOf(",")) + ")"
  Dim cmd As SqlCommand = New SqlCommand( deleteSQL, cn )
  cn.Open()
  cmd.ExecuteNonQuery()
  GridView1.DataBind()
  Catch Err As SqlException
  Response.Write(Err.Message.ToString)
  Finally
  cn.Close()
  End Try
End If
End Sub

 [C#]

protected void Button1_Click(object sender, EventArgs e)
{
  string gvIDs = "";
  bool chkBox = false;
//'Navigate through each row in the GridView for checkbox items
  foreach (GridViewRow gv in GridView1.Rows)
  {
    CheckBox deleteChkBxItem = (CheckBox)gv.FindControl("deleteRec");
    if (deleteChkBxItem.Checked)
    {
      chkBox = true;
// Concatenate GridView items with comma for SQL Delete
      gvIDs += ((Label)gv.FindControl("EmpID")).Text.ToString() + ",";
    }
  }
 
  SqlConnection cn = new SqlConnection(Sqldatasource1.ConnectionString);
  if (chkBox)
  {
// Execute SQL Query only if checkboxes are checked to avoid any error with initial null string
    try
    {
      string deleteSQL = "DELETE from employees WHERE employeeid IN (" +
        gvIDs.Substring(0, gvIDs.LastIndexOf(",")) + ")";
      SqlCommand cmd = new SqlCommand(deleteSQL, cn);
      cn.Open();
      cmd.ExecuteNonQuery();
      GridView1.DataBind();
    }
    catch (SqlException err)
    {
      Response.Write(err.Message.ToString());
    }
    finally
    {
      cn.Close();
    }
 
  }
}
Screenshots

Figure 1

 

Figure 2

 

Downloads

[Download Sample]

Note: Place the downloaded file inside the root directory (Inetpub/wwwroot) and use Visual Studio 2005 to execute the project.

Conclusion

This sample shows how to select/deselect one or multiple records using checkbox and on button click, delete the record based on user confirmation.


Product Spotlight
Product Spotlight 

©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-03-19 6:06:45 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search