ASP.NET程序中用Repeater实现分页

王朝asp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

文/waterswea

一、程序功能:为Repeater实现分页

二、窗体设计:

1、新建asp.net Web应用程序,命名为Repeater2,保存路径为http://192.168.0.1/Repeater2(注:我机子上的网站的ip是192.168.0.1的主目录是D:\web文件夹)然后点击确定。

2、向窗体添加一个3行一列的表,向表的第一行中添加一个Repeater控件,向表的第二行中添加两个Label控件向表的第三行中添加四个Button按钮。

3、切换到HTML代码窗口,在<asp:Repeater id="Repeater1" runat="server">和</asp:Repeater>之间添加以下代码:

<ItemTemplate>

<table id="Table2" style="FONT-SIZE: x-small" width="498">

<tr>

<td><%#DataBinder.Eval(Container,"DataItem.employeeid")%></td>

<td><%#DataBinder.Eval(Container,"DataItem.lastname")%></td>

</tr>

</table>

</ItemTemplate>

三、代码设计:

Imports System.Data.SqlClient

Public Class WebForm1

Inherits System.Web.UI.Page

Dim scon As New SqlConnection("server=localhost;database=northwind;uid=sa;pwd=123")

Dim sDA As SqlDataAdapter

Dim ds As DataSet

Dim currentPage As Integer '记录着目前在哪一页上

Dim maxPage As Integer '总共有多少页

Const rowCount As Integer = 3 '一页有多少行

Dim rowSum As Integer '总共有多少行

'窗体代码省略

PRivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If Not Page.IsPostBack Then

sDA = New SqlDataAdapter("select employeeid, lastname from employees order by employeeid", scon)

ds = New DataSet

Try

sDA.Fill(ds, "employees")

'获取总共有多少行

rowSum = ds.Tables(0).Rows.Count

Catch ex As Exception

rowSum = 0

End Try

'如果没有数据,退出过程

If rowSum = 0 Then Exit Sub

'计算出浏览数据的总页数

If rowSum Mod rowCount > 0 Then

'有余数要加1

maxPage = rowSum \ rowCount + 1

Else

'正好除尽

maxPage = rowSum \ rowCount

End If

currentPage = 1

'调用绑定数据过程

readpage(currentPage)

BindData()

Label2.Text = maxPage

'首页和上一页按钮不可见

Button1.Visible = False

Button2.Visible = False

End If

End Sub

'创建一个绑定数据的过程

Sub BindData()

Repeater1.DataSource = ds

Repeater1.DataBind()

Label1.Text = currentPage

End Sub

'创建一个填充数据集的过程

Sub readpage(ByVal n As Integer)

sDA = New SqlDataAdapter("select employeeid, lastname from employees order by employeeid", scon)

ds = New DataSet

ds.Clear()

sDA.Fill(ds, (n - 1) * rowCount, rowCount, "employees")

End Sub

'首页按钮

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

currentPage = 1

'调用填充数据集过程

readpage(currentPage)

'绑定数据

BindData()

'设置首页、第一页按钮不可见,显示下一页尾页按钮

Button1.Visible = False

Button2.Visible = False

Button3.Visible = True

Button4.Visible = True

End Sub

'上一页按钮

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

'如果现在页是第二页,设置首页和上一页按钮不可见

If Label1.Text > 2 Then

Button3.Visible = True

Button4.Visible = True

Else

Button1.Visible = False

Button2.Visible = False

Button3.Visible = True

Button4.Visible = True

End If

currentPage = Label1.Text - 1

readpage(currentPage)

BindData()

End Sub

'下一页按钮

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

'如果现在页倒数第二页,设置最后页和下一页按钮不可见

If Label1.Text < Label2.Text - 1 Then

Button1.Visible = True

Button2.Visible = True

Else

Button1.Visible = True

Button2.Visible = True

Button3.Visible = False

Button4.Visible = False

End If

currentPage = Label1.Text + 1

readpage(currentPage)

BindData()

End Sub

'尾页按钮

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

'设置当前页为最大页数

currentPage = Label2.Text

readpage(currentPage)

BindData()

Button1.Visible = True

Button2.Visible = True

Button3.Visible = False

Button4.Visible = False

End Sub

End Class

窗体界面如下所示:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航