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.