完整的DataList和Repeater分页的例子

参考 http://www.codeproject.com/aspnet/custompaging.asp

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CStudy;

namespace CTest
{
 /// <summary>
 /// Test2 的摘要说明。
 /// </summary>
 public class DatalistRepeater : System.Web.UI.Page
 {
        protected System.Web.UI.WebControls.CheckBox CheckBox1;
        protected System.Web.UI.WebControls.DataList DataList1;
        protected System.Web.UI.WebControls.HyperLink lnkPrev;
        protected System.Web.UI.WebControls.HyperLink lnkNext;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.Repeater Repeater1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!IsPostBack)
   {
    this.BindData();
   }
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
            this.Repeater1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
            this.DataList1.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.DataList1_ItemDataBound);
            this.Load += new System.EventHandler(this.Page_Load);

        }
  #endregion

        private void BindData()
        {
            GlobalInfo gf = new GlobalInfo();
            DataTable dt = new DataTable();
            string strSQL = "select * from app_user";
           
            dt = gf.getSelect(strSQL);

            PagedDataSource objPds = new PagedDataSource();
            objPds.DataSource = dt.DefaultView;
            objPds.AllowPaging = true;
            objPds.PageSize = 5;
            int curPage;

            if (Request.QueryString["Page"] != null)
            {
                curPage = Convert.ToInt32(Request.QueryString["Page"]);
            }
            else
            {
                curPage = 1;
            }

            objPds.CurrentPageIndex = curPage - 1;
            Label1.Text = "当前是:" + curPage.ToString() + "页";
           
            if (!objPds.IsFirstPage)
            {
                lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath.ToString() + "?Page=" + Convert.ToString(curPage - 1);
            }

            if (!objPds.IsLastPage)
            {
                lnkNext.NavigateUrl = Request.CurrentExecutionFilePath.ToString() + "?Page=" + Convert.ToString(curPage + 1);
            }

            DataList1.DataSource=objPds;
            DataList1.DataBind();

            Repeater1.DataSource = objPds;
            Repeater1.DataBind();
        }

        private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
        {
           
        }

        private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {
          
        }           
 }
}

.aspx
<%@ Register TagPrefix="uc1" TagName="GetPageHtml" Src="GetPageHtml.ascx" %>
<%@ Page language="c#" Codebehind="DatalistRepeater.aspx.cs" AutoEventWireup="false" Inherits="CTest.DatalistRepeater" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>Test2</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
        <script language="javascript">
   function setCheckBoxState()
   {
    var dom = document.all;
    var el = event.srcElement;
    
    if(el.tagName == "INPUT" && el.type.toLowerCase() == "checkbox")
    {
     for(i=0;i<dom.length;i++)
     {
      if(dom[i].tagName=="INPUT" && dom[i].type.toLowerCase() == "checkbox")
      {
       dom[i].checked = false;
      }
     }
     el.checked = !el.checked;
    }
   }
        </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="0">
                <TBODY>
                    <TR>
                        <TD><asp:repeater id="Repeater1" runat="server">
                                <HeaderTemplate>
                                    <table cellpadding="0" cellspacing="0" border="1" bordercolor="#000066" bordercolordark="#ffffff"
                                        style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial, 宋体" width="100%">
                                        <tr>
                                            <td colspan="5" align="center" bgcolor="#006699">用户信息</td>
                                        </tr>
                                        <tr bgcolor="#006699">
                                            <td width="3%">选择</td>
                                            <td width="20%">用户号</td>
                                            <td width="30%">用户名</td>
                                            <td width="30%">角色</td>
                                            <td width="20%">创建时间</td>
                                        </tr>
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <TR>
                                        <td>
                                            <asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
                                        </td>
                                        <td><%#DataBinder.Eval(Container.DataItem,"user_code")%></td>
                                        <td><%#DataBinder.Eval(Container.DataItem,"user_name")%></td>
                                        <td><%#DataBinder.Eval(Container.DataItem,"role_code")%></td>
                                        <td><%#DataBinder.Eval(Container.DataItem,"Created_date")%></td>
                                    </TR>
                                </ItemTemplate>
                                <FooterTemplate>
            </TABLE>
            </FooterTemplate> </asp:repeater>
            <P><FONT face="宋体"></FONT>&nbsp;</P>
            </TD></TR>
            <TR>
                <TD><asp:datalist id="DataList1" runat="server" Width="100%">
                        <HeaderTemplate>
                            <table cellpadding="0" cellspacing="0" border="1" bordercolor="#000066" bordercolordark="#ffffff"
                                style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial, 宋体" width="100%">
                                <tr>
                                    <td colspan="5" align="center" bgcolor="#006699">用户信息</td>
                                </tr>
                                <tr bgcolor="#006699">
                                    <td width="3%">选择</td>
                                    <td width="20%">用户号</td>
                                    <td width="30%">用户名</td>
                                    <td width="30%">角色</td>
                                    <td width="20%">创建时间</td>
                                </tr>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <TR>
                                <TD>
                                    <asp:CheckBox id="Checkbox2" runat="server"></asp:CheckBox></TD>
                                <TD><%#DataBinder.Eval(Container.DataItem,"user_code")%></TD>
                                <TD><%#DataBinder.Eval(Container.DataItem,"user_name")%></TD>
                                <TD><%#DataBinder.Eval(Container.DataItem,"role_code")%></TD>
                                <TD><%#DataBinder.Eval(Container.DataItem,"Created_date")%></TD>
                            </TR>
                        </ItemTemplate>
                        <FooterTemplate>
                            </table>
                        </FooterTemplate>
                    </asp:datalist>
                    <P><asp:hyperlink id="lnkPrev" runat="server">上一页</asp:hyperlink><FONT face="宋体">&nbsp;</FONT><asp:hyperlink id="lnkNext" runat="server">下一页</asp:hyperlink><FONT face="宋体">&nbsp;</FONT><asp:label id="Label1" runat="server"></asp:label></P>
                </TD>
            </TR>
            </TBODY></TABLE></form>
    </body>
</HTML>

---------------------------------------------------------------------------

you have to create them yourself, for example, you have to remember the PageCount property, then based on the CurrentPageIndex:


            Dim tr As New TableRow
            Dim tc As New TableCell

            Dim lb As LinkButton
            Dim lbl As Label
            Dim i As Integer

            If CurrentPageIndex = 0 Then
                tc.Controls.Add(New LiteralControl(ht("previous").ToString()))
            Else
                lb = New LinkButton
                lb.ID = "Previous"
                lb.Text = ht("previous").ToString()
                tc.Controls.Add(lb)
                lb.CommandArgument = "previous"
                AddHandler lb.Click, AddressOf Paging_Changed
            End If

            tc.Controls.Add(New LiteralControl(" | "))


            If CurrentPageIndex >= PageCount - 1 Then
                tc.Controls.Add(New LiteralControl(ht("next").ToString()))
            Else
                lb = New LinkButton
                lb.ID = "Next"
                lb.Text = ht("next").ToString()
                tc.Controls.Add(lb)
                lb.CommandArgument = "next"
                AddHandler lb.Click, AddressOf Paging_Changed
            End If

            tc.Controls.Add(New LiteralControl("&nbsp;&nbsp;&nbsp;&nbsp;" & ht("resultpage").ToString() & " "))

            For i = 0 To PageCount - 1
                If i <> 0 Then
                    tc.Controls.Add(New LiteralControl(" | "))
                End If
                If i = CurrentPageIndex Then
                    lbl = New Label
                    lbl.ID = "lbl" & i.ToString()
                    lbl.Font.Bold = True
                    lbl.Text = (i + 1).ToString
                    tc.Controls.Add(lbl)
                Else
                    lb = New LinkButton
                    lb.ID = "lb" & i.ToString()
                    lb.Text = (i + 1).ToString
                    AddHandler lb.Click, AddressOf Paging_Changed
                    tc.Controls.Add(lb)
                    lb.CommandArgument = lb.Text
                End If
            Next

            tr.Cells.Add(tc)
            t.Rows.Add(tr)

------------------------------------------------------------------------------------------

<script>PageCount=<%=id(1)%> //总页数
  topage=<%=topage%>  //当前停留页也就是rs.absolutepage
  document.write("总共"+PageCount+"页 ");
  document.write("每页"+<%=pagesetup%>+"条")
  for (var i=1; i <= PageCount; i++)
               {
  if (i <= topage+3 && i >= topage-3 || i==1 || i==PageCount)
                      {
          if (i > topage+4 || i < topage-2 && i!=1 && i!=2 ){document.write(" ... ");}
  if (topage==i)
                           {document.write(" <font color=#FF0000>"+ i +"</font> ");}
         else
                         {
           document.write("<a href=?topage="+i+" class=10point>["+ i +"]</a> ");
             }
           }
  }
  document.write("页")
</script>
用这种方法最好了...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值