zoukankan      html  css  js  c++  java
  • ASP.NET程序中用Repeater实现分页

    一、程序功能:为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

      窗体界面如下所示:

  • 相关阅读:
    第八章 多线程编程
    Linked List Cycle II
    Swap Nodes in Pairs
    Container With Most Water
    Best Time to Buy and Sell Stock III
    Best Time to Buy and Sell Stock II
    Linked List Cycle
    4Sum
    3Sum
    Integer to Roman
  • 原文地址:https://www.cnblogs.com/yongheng178/p/1283455.html
Copyright © 2011-2022 走看看