ASP.net分页实现代码(自己写)

首先在定义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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值