首先在定义4个LinkButton
分别为btnFirst, btnNext , btnPre , btnLast,对了一个datagrid 名字是MyDataGrid,还有三个lable表示状态的,名字是:lblPageCount(页数),lblRegisterCount(记录条数),lblCurrentIndex(当前第几页)
Page.aspx 页面代码如下(主要部分的):
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE width="666" border="1" align="center" cellPadding="1" cellSpacing="1" style="WIDTH: 666px; HEIGHT: 296px">
<tr>
<td align="center" colSpan="2"><STRONG><FONT size="4">个性化的分页实例</FONT></STRONG>
</td>
</tr>
<TR>
<TD align="right" colSpan="2">
<asp:LinkButton id="btnAdd" runat="server">增加</asp:LinkButton>|
<asp:LinkButton id="btnUpdate" runat="server">修改</asp:LinkButton>|
<asp:linkbutton id="lkbDel" runat="server">删除</asp:linkbutton></TD>
</TR>
<TR>
<TD colSpan="2"><asp:datagrid id="MyDataGrid" runat="server" DataKeyField="id" Width="100%" AllowSorting="True"
AutoGenerateColumns="true" PageSize="10" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" BackColor="White"
CellPadding="4">
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
<ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderStyle Width="10px"></HeaderStyle>
<HeaderTemplate>
<INPUT id="chkselectall" type="checkbox" onClick="checkallorno(this)"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkselect" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="#330099" BackColor="#FFFFCC"></PagerStyle>
</asp:datagrid></TD>
</TR>
<tr>
<TD align="right" colSpan="2">
<div align="center">
<TABLE id="Table1" cellSpacing="1" cellPadding="1" border="0">
<TR>
<TD noWrap><asp:label id="lblCurrentIndex" runat="server">CI</asp:label></TD>
<TD>|</TD>
<TD noWrap><asp:label id="lblRegisterCount" runat="server">RC</asp:label></TD>
<TD>|</TD>
<TD noWrap><asp:label id="lblPageCount" runat="server">PC</asp:label></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnFirst" οnclick="PagerButtonClick" runat="server" CommandArgument="first">首页</asp:linkbutton></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnPrev" οnclick="PagerButtonClick" runat="server" CommandArgument="prev">上一页</asp:linkbutton></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnNext" οnclick="PagerButtonClick" runat="server" CommandArgument="next">下一页</asp:linkbutton></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnLast" οnclick="PagerButtonClick" runat="server" CommandArgument="last">尾页</asp:linkbutton></TD>
</TR>
</TABLE>
</div>
</TD>
</tr>
</TABLE>
</FONT>
</form>
</body>
后台 代码:
'定义全局静态变量,记录选中页面之前的总记录数(当然你要导数据连接命名空间,不会,^_^!)
Dim conn As New SqlConnection("server=.;user=sa;password=sa;database=dbaccess")
Dim adp As SqlDataAdapter
Dim cmd As SqlCommand
Dim ds As New System.Data.DataSet
Dim RecordCount, PageCount, CurrentPage, i As Integer
Dim codemessage As String
Dim pagesize As Integer
Page_load 代码:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Me.pagesize = 3
conn.Open()
If Not Me.IsPostBack Then
'分页设置
Me.ViewState("state") = "all"
CurrentPage = 0
viewstate("pageindex") = 0
Dim intcount As Integer
cmd = New SqlCommand("select count(*) as rs from users", conn)
Dim dr As SqlDataReader = cmd.ExecuteReader()
If (dr.Read()) Then
intcount = dr("rs")
Else
intcount = 0
End If
dr.Close()
'计算共有多少条记录()
Me.RecordCount = intcount
'计算共有多少页()
If (Me.RecordCount Mod pagesize = 0) Then
PageCount = Me.RecordCount \ pagesize
Else
PageCount = RecordCount \ pagesize + 1
End If
viewstate("pagecount") = PageCount
Me.ViewState("pagecount") = PageCount
DbListBind()
ShowStats()
'让首页btnFirst变的不可以用哦
Me.btnFirst.Enabled = False
End If
End Sub
Public Sub DbListBind()
'显示数据清单+++++++++++++++++++++++++++++++++++
Dim startindex As Integer
'导入数据起始地址()
startindex = CurrentPage * pagesize
Dim strSel As String = "select * from users order by id asc"
'程序修改对象()
Dim MyAdapter As New SqlDataAdapter(strSel, conn)
MyAdapter.Fill(ds, startindex, pagesize, "guest")
Me.MyDataGrid.DataSource = ds
Me.MyDataGrid.DataBind()
Me.btnNext.Enabled = True
Me.btnPrev.Enabled = True
If CurrentPage >= PageCount - 1 Then
btnNext.Enabled = False
End If
If CurrentPage = 0 Then
btnPrev.Enabled = False
End If
lblCurrentIndex.Text = "第 " + (Me.CurrentPage + 1).ToString() + " 页"
End Sub
Public Sub PagerButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)
'获得LinkButton的参数值
Dim args As String = sender.CommandArgument
CurrentPage = viewstate("pageindex")
PageCount = viewstate("pagecount")
Select Case args
Case "next"
If CurrentPage < PageCount - 1 Then
CurrentPage = CurrentPage + 1
End If
Me.btnLast.Enabled = True
Me.btnFirst.Enabled = True
If (Me.CurrentPage = Me.PageCount - 1) Then
Me.btnLast.Enabled = False
End If
Case "prev"
If CurrentPage > 0 Then
CurrentPage = CurrentPage - 1
End If
Me.btnFirst.Enabled = True
Me.btnLast.Enabled = True
If (Me.CurrentPage = 0) Then
Me.btnFirst.Enabled = False
End If
Case "last"
CurrentPage = Me.PageCount - 1
Me.btnLast.Enabled = False
Me.btnFirst.Enabled = True
Case "first"
CurrentPage = 0
Me.btnFirst.Enabled = False
Me.btnLast.Enabled = True
End Select
viewstate("pageindex") = CurrentPage
If viewstate("state") = "all" Then
DbListBind()
End If
End Sub
Public Sub DbListBind()
'显示数据清单+++++++++++++++++++++++++++++++++++
Dim startindex As Integer
'导入数据起始地址()
startindex = CurrentPage * pagesize
Dim strSel As String = "select * from users order by id asc"
'程序修改对象()
Dim MyAdapter As New SqlDataAdapter(strSel, conn)
MyAdapter.Fill(ds, startindex, pagesize, "guest")
Me.MyDataGrid.DataSource = ds
Me.MyDataGrid.DataBind()
Me.btnNext.Enabled = True
Me.btnPrev.Enabled = True
If CurrentPage >= PageCount - 1 Then
btnNext.Enabled = False
End If
If CurrentPage = 0 Then
btnPrev.Enabled = False
End If
lblCurrentIndex.Text = "第 " + (Me.CurrentPage + 1).ToString() + " 页"
End Sub
Public Sub PagerButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)
'获得LinkButton的参数值
Dim args As String = sender.CommandArgument
CurrentPage = viewstate("pageindex")
PageCount = viewstate("pagecount")
Select Case args
Case "next"
If CurrentPage < PageCount - 1 Then
CurrentPage = CurrentPage + 1
End If
Case "prev"
If CurrentPage > 0 Then
CurrentPage = CurrentPage - 1
End If
Case "last"
CurrentPage = Me.PageCount - 1
Case "first"
CurrentPage = 0
End Select
viewstate("pageindex") = CurrentPage
If viewstate("state") = "all" Then
DbListBind()
End If
End Sub
Public Sub ShowStats()
lblPageCount.Text = "总共 " + Me.PageCount.ToString() + " 页"
lblRegisterCount.Text = "共 " + Me.RecordCount.ToString() + " 条"
End Sub
分别为btnFirst, btnNext , btnPre , btnLast,对了一个datagrid 名字是MyDataGrid,还有三个lable表示状态的,名字是:lblPageCount(页数),lblRegisterCount(记录条数),lblCurrentIndex(当前第几页)
Page.aspx 页面代码如下(主要部分的):
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE width="666" border="1" align="center" cellPadding="1" cellSpacing="1" style="WIDTH: 666px; HEIGHT: 296px">
<tr>
<td align="center" colSpan="2"><STRONG><FONT size="4">个性化的分页实例</FONT></STRONG>
</td>
</tr>
<TR>
<TD align="right" colSpan="2">
<asp:LinkButton id="btnAdd" runat="server">增加</asp:LinkButton>|
<asp:LinkButton id="btnUpdate" runat="server">修改</asp:LinkButton>|
<asp:linkbutton id="lkbDel" runat="server">删除</asp:linkbutton></TD>
</TR>
<TR>
<TD colSpan="2"><asp:datagrid id="MyDataGrid" runat="server" DataKeyField="id" Width="100%" AllowSorting="True"
AutoGenerateColumns="true" PageSize="10" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" BackColor="White"
CellPadding="4">
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
<ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderStyle Width="10px"></HeaderStyle>
<HeaderTemplate>
<INPUT id="chkselectall" type="checkbox" onClick="checkallorno(this)"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkselect" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="#330099" BackColor="#FFFFCC"></PagerStyle>
</asp:datagrid></TD>
</TR>
<tr>
<TD align="right" colSpan="2">
<div align="center">
<TABLE id="Table1" cellSpacing="1" cellPadding="1" border="0">
<TR>
<TD noWrap><asp:label id="lblCurrentIndex" runat="server">CI</asp:label></TD>
<TD>|</TD>
<TD noWrap><asp:label id="lblRegisterCount" runat="server">RC</asp:label></TD>
<TD>|</TD>
<TD noWrap><asp:label id="lblPageCount" runat="server">PC</asp:label></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnFirst" οnclick="PagerButtonClick" runat="server" CommandArgument="first">首页</asp:linkbutton></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnPrev" οnclick="PagerButtonClick" runat="server" CommandArgument="prev">上一页</asp:linkbutton></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnNext" οnclick="PagerButtonClick" runat="server" CommandArgument="next">下一页</asp:linkbutton></TD>
<TD>|</TD>
<TD noWrap><asp:linkbutton id="btnLast" οnclick="PagerButtonClick" runat="server" CommandArgument="last">尾页</asp:linkbutton></TD>
</TR>
</TABLE>
</div>
</TD>
</tr>
</TABLE>
</FONT>
</form>
</body>
后台 代码:
'定义全局静态变量,记录选中页面之前的总记录数(当然你要导数据连接命名空间,不会,^_^!)
Dim conn As New SqlConnection("server=.;user=sa;password=sa;database=dbaccess")
Dim adp As SqlDataAdapter
Dim cmd As SqlCommand
Dim ds As New System.Data.DataSet
Dim RecordCount, PageCount, CurrentPage, i As Integer
Dim codemessage As String
Dim pagesize As Integer
Page_load 代码:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Me.pagesize = 3
conn.Open()
If Not Me.IsPostBack Then
'分页设置
Me.ViewState("state") = "all"
CurrentPage = 0
viewstate("pageindex") = 0
Dim intcount As Integer
cmd = New SqlCommand("select count(*) as rs from users", conn)
Dim dr As SqlDataReader = cmd.ExecuteReader()
If (dr.Read()) Then
intcount = dr("rs")
Else
intcount = 0
End If
dr.Close()
'计算共有多少条记录()
Me.RecordCount = intcount
'计算共有多少页()
If (Me.RecordCount Mod pagesize = 0) Then
PageCount = Me.RecordCount \ pagesize
Else
PageCount = RecordCount \ pagesize + 1
End If
viewstate("pagecount") = PageCount
Me.ViewState("pagecount") = PageCount
DbListBind()
ShowStats()
'让首页btnFirst变的不可以用哦
Me.btnFirst.Enabled = False
End If
End Sub
Public Sub DbListBind()
'显示数据清单+++++++++++++++++++++++++++++++++++
Dim startindex As Integer
'导入数据起始地址()
startindex = CurrentPage * pagesize
Dim strSel As String = "select * from users order by id asc"
'程序修改对象()
Dim MyAdapter As New SqlDataAdapter(strSel, conn)
MyAdapter.Fill(ds, startindex, pagesize, "guest")
Me.MyDataGrid.DataSource = ds
Me.MyDataGrid.DataBind()
Me.btnNext.Enabled = True
Me.btnPrev.Enabled = True
If CurrentPage >= PageCount - 1 Then
btnNext.Enabled = False
End If
If CurrentPage = 0 Then
btnPrev.Enabled = False
End If
lblCurrentIndex.Text = "第 " + (Me.CurrentPage + 1).ToString() + " 页"
End Sub
Public Sub PagerButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)
'获得LinkButton的参数值
Dim args As String = sender.CommandArgument
CurrentPage = viewstate("pageindex")
PageCount = viewstate("pagecount")
Select Case args
Case "next"
If CurrentPage < PageCount - 1 Then
CurrentPage = CurrentPage + 1
End If
Me.btnLast.Enabled = True
Me.btnFirst.Enabled = True
If (Me.CurrentPage = Me.PageCount - 1) Then
Me.btnLast.Enabled = False
End If
Case "prev"
If CurrentPage > 0 Then
CurrentPage = CurrentPage - 1
End If
Me.btnFirst.Enabled = True
Me.btnLast.Enabled = True
If (Me.CurrentPage = 0) Then
Me.btnFirst.Enabled = False
End If
Case "last"
CurrentPage = Me.PageCount - 1
Me.btnLast.Enabled = False
Me.btnFirst.Enabled = True
Case "first"
CurrentPage = 0
Me.btnFirst.Enabled = False
Me.btnLast.Enabled = True
End Select
viewstate("pageindex") = CurrentPage
If viewstate("state") = "all" Then
DbListBind()
End If
End Sub
Public Sub DbListBind()
'显示数据清单+++++++++++++++++++++++++++++++++++
Dim startindex As Integer
'导入数据起始地址()
startindex = CurrentPage * pagesize
Dim strSel As String = "select * from users order by id asc"
'程序修改对象()
Dim MyAdapter As New SqlDataAdapter(strSel, conn)
MyAdapter.Fill(ds, startindex, pagesize, "guest")
Me.MyDataGrid.DataSource = ds
Me.MyDataGrid.DataBind()
Me.btnNext.Enabled = True
Me.btnPrev.Enabled = True
If CurrentPage >= PageCount - 1 Then
btnNext.Enabled = False
End If
If CurrentPage = 0 Then
btnPrev.Enabled = False
End If
lblCurrentIndex.Text = "第 " + (Me.CurrentPage + 1).ToString() + " 页"
End Sub
Public Sub PagerButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)
'获得LinkButton的参数值
Dim args As String = sender.CommandArgument
CurrentPage = viewstate("pageindex")
PageCount = viewstate("pagecount")
Select Case args
Case "next"
If CurrentPage < PageCount - 1 Then
CurrentPage = CurrentPage + 1
End If
Case "prev"
If CurrentPage > 0 Then
CurrentPage = CurrentPage - 1
End If
Case "last"
CurrentPage = Me.PageCount - 1
Case "first"
CurrentPage = 0
End Select
viewstate("pageindex") = CurrentPage
If viewstate("state") = "all" Then
DbListBind()
End If
End Sub
Public Sub ShowStats()
lblPageCount.Text = "总共 " + Me.PageCount.ToString() + " 页"
lblRegisterCount.Text = "共 " + Me.RecordCount.ToString() + " 条"
End Sub