In this blog we will know about how to do a custom paging containing a dropdown list pager with the help of a Datagrid control.

Features to do

1.Here we will have four link buttons to navigate the records as first, previous, next and last. Tooltip is added to each link buttons.

2.We have a label control where we can know how many records are present in the database.

3.We have a Dropdown List where its list item is bound with some numbers. So when we choose any number from the dropdown list that number of records will be display in the datagrid.

4.While navigating the records we have a page count, which is displayed in the label control. Here we can know what page of results we are currently viewing.

In .net framework 3.5 no datagrid is available in the toolbox. So we have to make it available in the toolbox. To do that right click on the toolbox then click choose items, then check all the checkbox present near datagrid and click ok. You will notice that datagrid control is added to the toolbox.

Table structure

Create table employee(empid int primary key,empname varchar(50),empsal int,empadd varchar(50),empdes varchar(50))

Default.aspx code

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" 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 runat="server">

<title>Datagrid paging with dropdown</title>

</head>

<body>

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

<div>

<asp:Datagrid id="dg1" runat="server" AutoGenerateColumns="true"

AllowPaging="True" AllowCustomPaging="False"

PagerStyle-Visible = "False" HeaderStyle-BackColor="Red"

HeaderStyle-ForeColor="White" BackColor="#FFCC66" >

<PagerStyle Visible="False"></PagerStyle>

<AlternatingItemStyle BackColor="#FFFFCC" />

<HeaderStyle BackColor="Red" ForeColor="White"></HeaderStyle>

</asp:Datagrid>

<asp:linkbutton id="Firstbutton" Text="<< 1st Page" CommandArgument="0"

runat="server" onClick="NavigateButtonClick" ForeColor="#333300" ToolTip="First"/>

<asp:linkbutton id="Prevbutton" Text= "" CommandArgument="prev" runat="server"

onClick="NavigateButtonClick" ForeColor="#333300" ToolTip="Previous"/>

<asp:linkbutton id="Nextbutton" Text= "" CommandArgument="next" runat="server"

onClick="NavigateButtonClick" ForeColor="#333300" ToolTip="Next"/>

<asp:linkbutton id="Lastbutton" Text="Last Page >>" CommandArgument="last"

runat="server" onClick="NavigateButtonClick" ForeColor="#333300" ToolTip="Last"/>

<br /><br />

<asp:Label id="PageCount" runat="server" /><br />

<asp:label id="TotalRecords" runat="server" /> <br /> <br /><br/><br />

Change Pagesize <asp:DropDownList id="d1" runat="server" ForeColor="Maroon">

<asp:ListItem>1</asp:ListItem>

<asp:ListItem>2</asp:ListItem>

<asp:ListItem>3</asp:ListItem>

<asp:ListItem Selected="True">4</asp:ListItem>

<asp:ListItem>5</asp:ListItem>

<asp:ListItem>6</asp:ListItem>

<asp:ListItem>7</asp:ListItem>

<asp:ListItem>8</asp:ListItem>

<asp:ListItem>9</asp:ListItem>

</asp:DropDownList>

<asp:button ID="showpage" text="Choose Pagesize" runat="server"/>

</div>

</form>

</body>

</html>

Default.aspx.vb code

Imports System.Data

Imports System.Data.SqlClient

Partial Class _Default

Inherits System.Web.UI.Page

Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings.Item("ConnectionString").ToString()

Dim con As New SqlConnection(strConnString)

Dim str As String

Dim com As SqlCommand

Dim sqlda As SqlDataAdapter

Dim ds As DataSet

Dim r1 As Integer

Dim r2 As Integer

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not IsPostBack Then

Bindgrid()

End If

End Sub

Sub Bindgrid()

con.Open()

str = ("SELECT * from employee")

com = New SqlCommand(str, con)

sqlda = New SqlDataAdapter(com)

ds = New DataSet

sqlda.Fill(ds, "employee")

r2 = ds.Tables("employee").Rows.Count.ToString()

dg1.PageSize = Convert.ToInt32(d1.SelectedItem.Value)

If Not Page.IsPostBack Then

dg1.CurrentPageIndex = 0

End If

r1 = r2

TotalRecords.Text = "Total" & " " & " " & " " & "<b><font color=red>" & r2 & "</font> records found"

Try

dg1.DataSource = ds

dg1.DataBind()

Catch e As Exception

dg1.CurrentPageIndex = 0

End Try

If dg1.CurrentPageIndex <> 0 Then

Call Prev_Buttons()

Firstbutton.Visible = True

Prevbutton.Visible = True

Else

Firstbutton.Visible = False

Prevbutton.Visible = False

End If

If dg1.CurrentPageIndex <> (dg1.PageCount - 1) Then

Call Next_Buttons()

Nextbutton.Visible = True

Lastbutton.Visible = True

Else

Nextbutton.Visible = False

Lastbutton.Visible = False

End If

PageCount.Text = "Page " & "<b><font color=red>" & dg1.CurrentPageIndex + 1 & "</font>" & "of " & "<b><font color=red>" & dg1.PageCount & "</font>"

con.Close()

End Sub

Sub NavigateButtonClick(ByVal sender As Object, ByVal e As EventArgs)

Dim flag As String = sender.CommandArgument

Select Case flag

Case "next"

If (dg1.CurrentPageIndex < (dg1.PageCount - 1)) Then

dg1.CurrentPageIndex += 1

End If

Case "prev"

If (dg1.CurrentPageIndex > 0) Then

dg1.CurrentPageIndex -= 1

End If

Case "last"

dg1.CurrentPageIndex = (dg1.PageCount - 1)

Case Else

dg1.CurrentPageIndex = Convert.ToInt32(flag)

End Select

Bindgrid()

End Sub

Sub Prev_Buttons()

Dim Prevflag As String

If dg1.CurrentPageIndex + 1 <> 1 And r1 <> -1 Then

Prevflag = dg1.PageSize

Prevbutton.Text = ("< Prev " & Prevflag)

If dg1.CurrentPageIndex + 1 = dg1.PageCount Then

Firstbutton.Text = ("<< 1st Page")

End If

End If

End Sub

Sub Next_Buttons()

Dim Nextflag As String

If dg1.CurrentPageIndex + 1 < dg1.PageCount Then

Nextflag = dg1.PageSize

Nextbutton.Text = ("Next " & Nextflag & " >")

End If

If dg1.CurrentPageIndex + 1 = dg1.PageCount - 1 Then

Dim Endflag As Integer = r1 - (dg1.PageSize * (dg1.CurrentPageIndex + 1))

Nextbutton.Text = ("Next " & Endflag & " >")

End If

End Sub

Protected Sub showpage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles showpage.Click

dg1.CurrentPageIndex = 0

Bindgrid()

End Sub

End Class


Thanks for reading