Gridview paging and multiple row delete using checkbox

This article describes how to bind GridView using LINQ, dynamic paging and how to delete multiple rows using checkbox selection.



This article gives you information about GridView paging and multiple row deletion using CheckBox selection and LINQ.

Step 1: Create Default.aspx file like

<%
@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    <title>Untitled Page</title>   

</head>

<body>

    <form id="form1" runat="server">

    <div align="center">

        <table >          

            <tr>

                <td>

                    <div align="center">               

                      <table >

                            <tr>

                                <td>

                                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"

                                        onpageindexchanging="GridView1_PageIndexChanging">          

                                        <Columns>               

                                            <asp:TemplateField>

                                                <ItemTemplate>

                                                    <asp:CheckBox ID="ch1" runat="server" />

                                                </ItemTemplate>

                                            </asp:TemplateField>

                                            <asp:BoundField HeaderText="EMPLOYEE ID" DataField="id" />

                                            <asp:BoundField HeaderText="EMPLOYEE NAME" DataField="name" />

                                            <asp:BoundField HeaderText="CITY" DataField="empcity" />

                                        </Columns>

                                    </asp:GridView>

                                 </td>

                             </tr>

                            <tr>

                                <td>

                                    <asp:Button ID="Button1" runat="server" Text="Delete" onclick="Button1_Click" />

                                 </td>

                            </tr>

                      </table>       

                    </div>

                </td>

            </tr>

        </table>       

    </div>

    </form>

</body>

</html>

Step 2 : Script file for create empinfo table.

SET
ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[empinfo]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[empinfo](

          [empid] [int] IDENTITY(1,1) NOT NULL,

          [empname] [text] NOT NULL,

          [cityid] [int] NOT NULL,

 CONSTRAINT [PK_empinfo] PRIMARY KEY CLUSTERED

(

          [empid] ASC

)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[city]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[city](

          [cityid] [int] IDENTITY(1,1) NOT NULL,

          [cityname] [nvarchar](50) NOT NULL,

 CONSTRAINT [PK_city] PRIMARY KEY CLUSTERED

(

          [cityid] ASC

)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]
END

Step 3 : Create Default.aspx.cs file like

using
System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.Linq.Mapping;
using System.Windows.Forms;
using System.Collections; 

public partial class _Default : System.Web.UI.Page

{

 

    private int currentpage = 0;

 

    ArrayList alist = new ArrayList();

 

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            Bindgridview(); //Bind Gridview.

        }

    }

 

    private void Bindgridview()

    {

        using (testgridviewDataContext db = new testgridviewDataContext())

        {

 

            var info = from emp in db.empinfos

                       join cityinfo in db.cities on emp.cityid equals cityinfo.cityid

                       select new

                       {

                           id = emp.empid,

                           name = emp.empname,

                           empcity = cityinfo.cityname

                       };

 

            if (info != null)

            {

                GridView1.AllowPaging = true;

                GridView1.PageSize = 5;

                GridView1.PageIndex = currentpage;

                GridView1.DataSource = info;

                GridView1.DataBind();

            }

        }

    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

    {

        currentpage = e.NewPageIndex;

        Bindgridview();

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        for (int i = 0; i < GridView1.Rows.Count; i++)

        {

            System.Web.UI.WebControls.CheckBox cbb = (System.Web.UI.WebControls.CheckBox)GridView1.Rows[i].FindControl("ch1");

 

            if (cbb.Checked == true)

            {

                int id = Convert.ToInt32(GridView1.Rows[i].Cells[1].Text);

                alist.Add(id);

            }

        }

 

        using (testgridviewDataContext db = new testgridviewDataContext())

        {

            for (int j = 0; j < alist.Count; j++)

            {

                int id = Convert.ToInt32(alist[j]);

                var info = from p in db.empinfos

                           where p.empid == id

                           select p;

 

                foreach (var deleteinfo in info)

                {

                    db.empinfos.DeleteOnSubmit(deleteinfo);

                }

                try

                {

                    db.SubmitChanges();

                }

                catch (Exception ex)

                {

                    Response.Write("Error:" + ex.Message);

                }

            }

        }

        currentpage = 0;

        Bindgridview();

    }

}

Step 4 : Run your project. Page output like this.

1.gif

For more information download my source code.