ASP.NET Repeater_02_完整分页

摘要:
%@PageLanguage=“C#”%>%@ImportNamespace=“System.Data”%>//www.w3.org/TR/xhtml1/DTD/xhtml1 transitional.DTD“&gt://www.w3.org/1999/xhtml”&gt:pds.AllowPaging=true:PageSize.Text=Count.ToString():

本文内容

  • 分页基本1
  • 分页基本2
  • 分页按钮在 Repeater 控件内
  • 分页按钮在 Repeater 控件外

分页基本1

<%@ Page Language="C#" %>
 
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
 
    <script runat="server">
   1:  
   2:         private void BindData()
   3:         {
   4:             DataTable dt = ASPDotNetRepeater.DataSource.CreateEMPDataSource();
   5:             PagedDataSource pds = new PagedDataSource();
   6:             pds.DataSource = dt.DefaultView;
   7:             pds.AllowPaging = true;
   8:             pds.PageSize = 2;
   9:             int CurPage;
  10:             if (Request.QueryString["Page"] != null)
  11:             {
  12:                 CurPage = Convert.ToInt32(Request.QueryString["Page"]);
  13:             }
  14:             else
  15:             {
  16:                 CurPage = 1;
  17:             }
  18:             pds.CurrentPageIndex = CurPage - 1;
  19:             int Count = pds.PageCount;
  20:             CurrentPage.Text = "当前页:" + CurPage.ToString();
  21:             PageSize.Text = Count.ToString();
  22:             if (!pds.IsFirstPage)
  23:             {
  24:                 this.First.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1";
  25:                 this.Last.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(Count - 1); ;
  26:                 Front.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);
  27:             }
  28:             else
  29:             {
  30:                 this.First.Visible = false;
  31:                 this.Last.Visible = false;
  32:             }
  33:             if (!pds.IsLastPage)
  34:             {
  35:                 Next.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1);
  36:             }
  37:             else
  38:             {
  39:                 this.First.Visible = false;
  40:                 this.Last.Visible = false;
  41:             }
  42:             Repeater1.DataSource = pds;
  43:             Repeater1.DataBind();
  44:         }
  45:         protected void Page_Load(object sender, EventArgs e)
  46:         {
  47:             if (!IsPostBack)
  48:             {
  49:                 if (!IsPostBack)
  50:                 {
  51:                     BindData();
  52:                     this.First.Visible = true;
  53:                     this.Last.Visible = true;
  54:                 }
  55:             }
  56:         }
  57:     
</script>
 
</head>
<body>
    <form id="form1" runat="server">
    <table>
        <tr>
            <td align="left">
                Repeater 控件
            </td>
        </tr>
        <tr>
            <td>
                <asp:Repeater ID="Repeater1" runat="server">
                    <HeaderTemplate>
                        <table>
                            <tr>
                                <td>
                                    自定义头模板
                                </td>
                            </tr>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr>
                            <td>
                                <a href='Rec.aspx?id=<%#Eval("EMPNO") %>' target="_blank">
                                    <%
   1: #Eval("ENAME")
%></a>
                            </td>
                        </tr>
                    </ItemTemplate>
                    <AlternatingItemTemplate>
                        <tr>
                            <td>
                                <a href='Rec.aspx?id=<%#Eval("EMPNO") %>' target="_blank">
                                    <%
   1: #Eval("ENAME")
%></a>
                            </td>
                        </tr>
                    </AlternatingItemTemplate>
                    <FooterTemplate>
                        <tr>
                            <td>
                                自定义尾模板
                            </td>
                        </tr>
                        </table>
                    </FooterTemplate>
                </asp:Repeater>
            </td>
        </tr>
        <tr>
            <td>
                <asp:HyperLink ID="First" runat="server">首页</asp:HyperLink>
                <asp:HyperLink ID="Front" runat="server">上一页</asp:HyperLink>
                <asp:HyperLink ID="Next" runat="server">下一页</asp:HyperLink>
                <asp:HyperLink ID="Last" runat="server">尾页</asp:HyperLink>
            </td>
        </tr>
        <tr>
            <td>
                当前页为:<asp:Label ID="CurrentPage" runat="server" Text="Label"></asp:Label><br />
                <asp:Label ID="PageSize" runat="server" Text="Label"></asp:Label>
            </td>
        </tr>
    </table>
    </form>
</body>
</html>
说明

(1) Repeater 控件本身没有分页功能,但与其他类似的控件相比,它是比较底层的控件,尤其是它的分页功能;

(2) PagedDataSource 类的数据源必须是视图,如 DataTable.DefaultView,不能是 DataTable;

(3) 下一页、上一页等分页按钮不在 Repeater 里,而且分页的操作都在 BindData() 方法。

分页基本2

<%@ Page Language="C#" %>
 
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
 
    <script runat="server">
   1:  
   2:         public void BindData()
   3:         {
   4:             DataTable dt = ASPDotNetRepeater.DataSource.CreateEMPDataSource();
   5:             PagedDataSource pds = new PagedDataSource();
   6:             pds.DataSource = dt.DefaultView;
   7:             pds.AllowPaging = true;
   8:             pds.PageSize = 2;
   9:  
  10:             int curpage = Convert.ToInt32(CurrentPage.Text);
  11:             this.Next.Enabled = true;
  12:             this.Front.Enabled = true;
  13:             pds.CurrentPageIndex = curpage - 1;
  14:             if (curpage == 1)
  15:             {
  16:                 this.Front.Enabled = false;
  17:             }
  18:             if (curpage == pds.PageCount)
  19:             {
  20:                 this.Next.Enabled = false;
  21:             }
  22:             this.Repeater1.DataSource = pds;
  23:             this.Repeater1.DataBind();
  24:         }
  25:         protected void Page_Load(object sender, EventArgs e)
  26:         {
  27:             if (!IsPostBack)
  28:             {
  29:                 CurrentPage.Text = "1";
  30:                 BindData();
  31:             }
  32:         }
  33:         protected void Front_Click(object sender, EventArgs e)
  34:         {
  35:             this.CurrentPage.Text = Convert.ToString(Convert.ToInt32(CurrentPage.Text) - 1);
  36:             BindData();
  37:         }
  38:         protected void Next_Click(object sender, EventArgs e)
  39:         {
  40:             this.CurrentPage.Text = Convert.ToString(Convert.ToInt32(CurrentPage.Text) + 1);
  41:             BindData();
  42:         }
  43:     
</script>
 
</head>
<body>
    <form id="form1" runat="server">
    <asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate>
            <table>
                <tr>
                    <td>
                        自定义头模板
                    </td>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    员工编号:<%
   1: # Eval("EMPNO") 
%>
                </td>
                <td>
                    员工姓名:<%
   1: # Eval("ENAME") 
%>
                </td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
            <tr>
                <td>
                    自定义脚模板
                </td>
            </tr>
            </table>
        </FooterTemplate>
    </asp:Repeater>
    当前页:<asp:Label ID="CurrentPage" runat="server"></asp:Label>
    <br />
    <asp:Button ID="Front" runat="server" OnClick="Front_Click" Text="上一页" />
    <asp:Button ID="Next" runat="server" OnClick="Next_Click" Text="下一页" />
    </form>
</body>
</html>
说明

(1) 本例通过单击两个按钮,查看上一页和下一页的内容;

(2) Repeater 控件通过 PagedDataSource 实现分页功能。一些本身具有分页功能的控件,如 GridView,也都是使用了 PagedDataSource 类,所以 PagedDataSource 是比较底层的一个类;

分页按钮在 Repeater 控件内

<%@ Page Language="C#" %>
 
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
 
    <script runat="server">
   1:  
   2:         private PagedDataSource pds()
   3:         {
   4:             DataTable dt = ASPDotNetRepeater.DataSource.CreateEMPDataSource();
   5:             PagedDataSource pds = new PagedDataSource();
   6:             pds.DataSource = dt.DefaultView;
   7:             pds.AllowPaging = true;
   8:             pds.PageSize = 2;
   9:             pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);
  10:             return pds;
  11:         }
  12:         protected void Page_Load(object sender, EventArgs e)
  13:         {
  14:             if (!IsPostBack)
  15:             {
  16:                 Repeater1.DataSource = pds();
  17:                 Repeater1.DataBind();
  18:             }
  19:         }
  20:         protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
  21:         {
  22:             if (e.Item.ItemType == ListItemType.Footer)
  23:             {
  24:                 DropDownList jump = (DropDownList)e.Item.FindControl("Jump");
  25:                 HyperLink first = (HyperLink)e.Item.FindControl("First");
  26:                 HyperLink front = (HyperLink)e.Item.FindControl("Front");
  27:                 HyperLink next = (HyperLink)e.Item.FindControl("Next");
  28:                 HyperLink last = (HyperLink)e.Item.FindControl("Last");
  29:                 Label currentPage = (Label)e.Item.FindControl("CurrentPage");
  30:                 Label pageSize = (Label)e.Item.FindControl("PageSize");
  31:  
  32:                 PagedDataSource pds = this.pds();
  33:                 pds.CurrentPageIndex = jump.SelectedIndex;
  34:                 int n = Convert.ToInt32(pds.PageCount);
  35:                 int i = Convert.ToInt32(pds.CurrentPageIndex);
  36:                 currentPage.Text = Convert.ToString(pds.CurrentPageIndex + 1);
  37:                 pageSize.Text = n.ToString();
  38:  
  39:                 if (!IsPostBack)
  40:                 {
  41:                     for (int j = 0; j < n; j++)
  42:                     {
  43:                         jump.Items.Add(Convert.ToString(j + 1));
  44:                     }
  45:                 }
  46:                 if (i <= 0)
  47:                 {
  48:                     first.Enabled = false;
  49:                     front.Enabled = false;
  50:                     last.Enabled = true;
  51:                     next.Enabled = true;
  52:                 }
  53:                 else
  54:                 {
  55:                     front.NavigateUrl = "?page=" + (i - 1);
  56:                 }
  57:                 if (i >= n - 1)
  58:                 {
  59:                     first.Enabled = true;
  60:                     last.Enabled = false;
  61:                     next.Enabled = false;
  62:                     front.Enabled = true;
  63:                 }
  64:                 else
  65:                 {
  66:                     next.NavigateUrl = "?page=" + (i + 1);
  67:                 }
  68:                 first.NavigateUrl = "?page=0";
  69:                 last.NavigateUrl = "?page=" + (n - 1);
  70:                 jump.SelectedIndex = Convert.ToInt32(pds.CurrentPageIndex);
  71:             }
  72:         }
  73:         protected void Jump_SelectedIndexChanged(object sender, EventArgs e)
  74:         {
  75:             string pageIndex = Convert.ToString((Convert.ToInt32(((DropDownList)sender).SelectedValue) - 1));
  76:             Response.Redirect("PagingUsingRepeaterHandle.aspx?page=" + pageIndex);
  77:         }
  78:     
</script>
 
</head>
<body>
    <form id="form1" runat="server">
    <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
        <HeaderTemplate>
            <table width="500">
                <tr>
                    <td>
                        员工姓名
                    </td>
                    <td>
                        出生日期
                    </td>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <a href='Rec.aspx?id=<%# Eval("EMPNO")%>'>
                        <%
   1: # Eval("ENAME") 
%></a>
                </td>
                <td>
                    <%
   1: # Eval("HIREDATE")
%>
                </td>
            </tr>
        </ItemTemplate>
        <SeparatorTemplate>
            <tr>
                <td colspan="2">
                    <hr style="border-top: 1pt;" />
                </td>
            </tr>
        </SeparatorTemplate>
        <FooterTemplate>
            <tr>
                <td colspan="2" style="font-size: 12pt">
                    <asp:HyperLink ID="First" runat="server" Text="首页"></asp:HyperLink>
                    <asp:HyperLink ID="Front" runat="server" Text="上一页"></asp:HyperLink>
                    <asp:HyperLink ID="Next" runat="server" Text="下一页"></asp:HyperLink>
                    <asp:HyperLink ID="Last" runat="server" Text="尾页"></asp:HyperLink>
                    <asp:Label ID="CurrentPage" runat="server" Text="Label"></asp:Label>页 共<asp:Label
                        ID="PageSize" runat="server" Text="Label"></asp:Label>页 跳至第<asp:DropDownList ID="Jump"
                            runat="server" AutoPostBack="true" OnSelectedIndexChanged="Jump_SelectedIndexChanged">
                        </asp:DropDownList>
                </td>
            </tr>
            </table>
        </FooterTemplate>
    </asp:Repeater>
    </form>
</body>
</html>

分页按钮在 Repeater 控件外

<%@ Page Language="C#" %>
 
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
 
    <script runat="server">
   1:  
   2:         protected void Page_Load(object sender, EventArgs e)
   3:         {
   4:             if (!IsPostBack)
   5:             {
   6:                 this.CurrentPage.Text = "1";
   7:                 this.BindData();
   8:             }
   9:         }
  10:         public void BindData()
  11:         {
  12:             DataTable dt = ASPDotNetRepeater.DataSource.CreateEMPDataSource();
  13:             PagedDataSource pds = new PagedDataSource();
  14:             pds.DataSource = dt.DefaultView;
  15:             pds.AllowPaging = true;
  16:             pds.PageSize = 2;
  17:             pds.CurrentPageIndex = Convert.ToInt32(this.CurrentPage.Text) - 1;
  18:  
  19:             PageSize.Text = pds.PageCount.ToString();
  20:             CurrentPage.Text = (pds.CurrentPageIndex + 1).ToString();
  21:             this.Front.Enabled = true;
  22:             this.First.Enabled = true;
  23:             this.Next.Enabled = true;
  24:             this.Last.Enabled = true;
  25:  
  26:  
  27:             if (!IsPostBack)
  28:             {
  29:                 for (int j = 0; j < pds.PageCount; j++)
  30:                 {
  31:                     this.Jump.Items.Add(Convert.ToString(j + 1));
  32:                 }
  33:             }
  34:  
  35:             if (pds.CurrentPageIndex < 1)
  36:             {
  37:                 this.Front.Enabled = false;
  38:                 this.First.Enabled = false;
  39:             }
  40:             if (pds.CurrentPageIndex == pds.PageCount - 1)
  41:             {
  42:                 this.Next.Enabled = false;
  43:                 this.Last.Enabled = false;
  44:             }
  45:             Repeater1.DataSource = pds;
  46:             Repeater1.DataBind();
  47:         }
  48:         protected void First_Click(object sender, EventArgs e)
  49:         {
  50:             this.CurrentPage.Text = "1";
  51:             this.BindData();
  52:         }
  53:         protected void Front_Click(object sender, EventArgs e)
  54:         {
  55:             this.CurrentPage.Text = Convert.ToString(Convert.ToInt32(CurrentPage.Text) - 1);
  56:             this.BindData();
  57:         }
  58:         protected void Next_Click(object sender, EventArgs e)
  59:         {
  60:             this.CurrentPage.Text = Convert.ToString(Convert.ToInt32(CurrentPage.Text) + 1);
  61:             this.BindData();
  62:         }
  63:         protected void Last_Click(object sender, EventArgs e)
  64:         {
  65:             this.CurrentPage.Text = this.PageSize.Text;
  66:             this.BindData();
  67:         }
  68:         protected void Jump_SelectedIndexChanged(object sender, EventArgs e)
  69:         {
  70:             string pageIndex = Convert.ToString((Convert.ToInt32(((DropDownList)sender).SelectedValue) - 1));
  71:             this.CurrentPage.Text = pageIndex;
  72:             this.BindData();
  73:         }
  74:     
</script>
 
</head>
<body>
    <form id="form1" runat="server">
    <table>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <tr>
                    <%
   1: --前台也可以调用后台的自定义函数--
%>
                    <td>
                        <a href="">
                            <%
   1: # DataBinder.Eval(Container.DataItem,"[EMPNO]")
%></a>
                    </td>
                    <td>
                        <a href="">
                            <%
   1: # DataBinder.Eval(Container.DataItem,"[ENAME]")
%></a>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
    <table border="1">
        <tr>
            <td>
                <asp:LinkButton ID="First" runat="server" OnClick="First_Click">页首</asp:LinkButton>
                <asp:LinkButton ID="Front" runat="server" OnClick="Front_Click">上一页</asp:LinkButton>
                <asp:LinkButton ID="Next" runat="server" OnClick="Next_Click">下一页</asp:LinkButton>
                <asp:LinkButton ID="Last" runat="server" OnClick="Last_Click">页尾</asp:LinkButton>
<asp:Label ID="CurrentPage" runat="server" Text="Label"></asp:Label>页/共<asp:Label
                    ID="PageSize" runat="server" Text="Label"></asp:Label>页 跳至<asp:DropDownList ID="Jump"
                        runat="server" AutoPostBack="true" OnSelectedIndexChanged="Jump_SelectedIndexChanged">
                    </asp:DropDownList>
            </td>
        </tr>
    </table>
    </form>
</body>
</html>
说明

(1) 将分页按钮放在了 Repeater 的 FooterTemplate,所以要实现分页功能,就需要 Repeater 的 ItemDataBound 事件,该事件在数据绑定后,并在数据显示前出发;

(2) 必须用视图 DataTable.DefaultView 给 PagedDataSource.DataSource 赋值;

(3) 传递页码的方式是采用通过超链接向当前页面传参数。

下载 Demo

免责声明:文章转载自《ASP.NET Repeater_02_完整分页》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇线程优先级,设置,setPriority()方法ArcPad 10 的安装部署下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

el-table刷新后table出现抖动现象

问题描述 el-table刷新后table出现抖动现象,而且如果使用了排序功能,点击排序后table抖动渲染后排序的选中状态图标消失了。 问题分析 <el-table-column :key="index + Math.random()" // 注意!!! > 渲染时key使用了Math.random()导致每次都是重新渲染表头。 所...

My97日历控件常用功能记录

My97相信大家都不陌生,应该是我所见过的最强大的一个日历控件了,最近的项目中也比较多地用到了此控件,而且项目中经常会有不同时间范围的需求,在此列出一些比较常用的日期范围格式的设置,尽管在My97的官方文档中有很详细的介绍,正是因为很详细所以查找起来不是很方便。 1 可以选择任何日期 <input id="txtDate" class="Wdate"...

Ubuntu Server版安装小记

之前一直是用Ubuntu的桌面版装docker,桌面版本身用起来比较方便,但开销较大,如果建立多个虚拟机就比较费劲了。今天试了一下server版的Ubuntu,发现还是比较方便的,相比桌面版,有如下好处: 占用空间小,只占用3G左右 占用内存小,甚至512MB内存也能较好的启动 这里记录下安装过程:   1. 下载 目前Ubuntu最小的版本是19.1...

集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils的使用

要使用这个工具类,我们要在maven工程当中加入相应的依赖: <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>...

下载文件夹的解决方案

ASP.NET批量下载文件的方法 这篇文章主要介绍了ASP.NET批量下载文件的方法,实例汇总了常见的asp.net实现批量下载的方法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了ASP.NET批量下载文件的方法。分享给大家供大家参考。具体方法如下: 一、实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存...

屏蔽文本框的粘贴操作(即,不允许从其他地方复制东西直接粘贴到该文本框中)

这个文本框一般都是输入身份证号码、输入密码等的文本框,是出于安全方面的考虑。 具体代码是向html代码的文本框代码属性中添加一个onpaste属性: //具体可以给HTML控件组中的Input(Text)控件添加此属性 <input id="Text1" type="text" onpaste="return false" name="textfie...