zoukankan      html  css  js  c++  java
  • Repeater 分页 实现

    ASP.NET中的DataList和Repeater提供了简单快速的方法來显示,其间,我们可以使用<ItemTemplate>更是使我们能随心所欲的控制数据的排放样式!

    可惜的是它们不像Datagrid那样,有内置的分页功能。
    如何解决呢?
    其实我们可以用【PagedDataSource】 类来解决分页的问题。
    PagedDataSource类的属性:
    DataSource -数据源
    AllowPaging - true 是否允许分页.
    PageSize - 每页项目数量
    PageCount - 总页数
    CurrentPageIndex - 当前所在的页索引
    以Repeater为例 代码如下:

    //Result.aspx.cs 文件

    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;
    namespace comeday
    {
     /// <summary>
     /// Result 的摘要说明。
     /// </summary>
     public class Result : System.Web.UI.Page
     {
      protected System.Web.UI.WebControls.HyperLink lnkPrev;
      protected System.Web.UI.WebControls.HyperLink lnkNext;
      protected System.Web.UI.WebControls.Label lblCurrentPage;
      protected System.Web.UI.WebControls.Label lblTotalPage;
      protected System.Web.UI.WebControls.Repeater Repeater1;
     
      private void Page_Load(object sender, System.EventArgs e)
      {
    //   数据源
       PagedDataSource Pgds=new PagedDataSource();
    //        
       Pgds.DataSource=CreateDataSource().DefaultView;
    //        设置允许分页
       Pgds.AllowPaging=true;
    //        每页显示为6行
       Pgds.PageSize=6;
    //        显示总共页数
    //
       lblTotalPage.Text=Pgds.PageCount.ToString();
    //        当前页
       int CurrentPage;
    //        请求页码为不为null设置当前页,否则为第一页
       if(Request.QueryString["Page"] != null)
       {
        
        CurrentPage = Convert.ToInt32(Request.QueryString["Page"]);
       }

       else
       {

        CurrentPage = 1;
       }
    //   当前页所引为页码-1
       Pgds.CurrentPageIndex = CurrentPage - 1;
    //   显示当前页码
       lblCurrentPage.Text = CurrentPage.ToString();
    //   如果不是第一页,通过参数Page设置上一页为当前页-1,否则不显示连接
       if(!Pgds.IsFirstPage)
       {
        //            Request.CurrentExecutionFilePath为当前请求虚拟路径
        lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage - 1);
       }
    //        End If
    //   如果不是最后一页,通过参数Page设置下一页为当前页+1,否则不显示连接
       if(!Pgds.IsLastPage)
       {
    //    Request.CurrentExecutionFilePath为当前请求虚拟路径
        lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage + 1);
       }
    //   模板绑定数据源  
       Repeater1.DataSource = Pgds;
       Repeater1.DataBind();

      }
      /// <summary>
      /// 生成数据源(一个Datatable)
      /// </summary>
      /// <returns></returns>
    public DataTable CreateDataSource()
    {
      DataTable dt; 
      DataRow dr;
      dt=new DataTable();
     //添加列
            dt.Columns.Add(new DataColumn("IntegerValue", System.Type.GetType("System.Int32")));
            dt.Columns.Add(new DataColumn("StringValue", System.Type.GetType("System.String")));
            dt.Columns.Add(new DataColumn("DateTimeValue", System.Type.GetType("System.DateTime")));
            dt.Columns.Add(new DataColumn("BoolValue", System.Type.GetType("System.Boolean")));
     //填充数据
     for( int i=0;i<50;i++)
     {
      dr = dt.NewRow();
      dr[0] = i;
      dr[1] = "Item " + i.ToString();
      dr[2] = DateTime.Now.ToShortTimeString();
      if(i%2!=0)
      {
       dr[3] = true;
      }
      else
      {
       dr[3] = false;
      }
      dt.Rows.Add(dr);
     }
     return dt;

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

      }
      #endregion
     }
    }
    ===========================================================================

    Result.aspx文件

    //<%@ Page Language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="comeday.Result" %>
    //<%@ import Namespace="System.Data" %>
    //<HTML>
    //<HEAD>
    //<title>DataRepeater</title>
    //<style type="text/css">
    //
    //BODY 
    //{
    // FONT: 10px Verdana, Arial, Helvetica, "sans serif"; COLOR: #000000 }
    //
    //.txt { FONT-SIZE: 12px }
    //
    //</style>
    //</HEAD>
    //<body>
    //<form id="Form2" name="form1" method="post" runat="server">
    //<table class="txt" width="100%" border="0">
    //     <tbody>
    //     <tr>
    //     <td>
    //     <asp:hyperlink id="lnkPrev" runat="server">上页</asp:hyperlink>
    //     <asp:hyperlink id="lnkNext" runat="server">下页</asp:hyperlink>第
    //                   <asp:label id="lblCurrentPage" runat="server"></asp:label>
    //     页 共
    //      <asp:label id="lblTotalPage" runat="server"></asp:label>页
    //                     </td>
    //     </tr>
    //     </tbody>
    //     </table>
    //     <asp:repeater id="Repeater1" runat="server">
    //     <ItemTemplate>
    //     <hr align="left" width="60%" size="1">
    //     <table class="txt" width="100%" border="0">
    //       <tr>
    //       <td>
    //       Order Date:
    //       <%# DataBinder.Eval(Container.DataItem, "DateTimeValue", "{0:d}") %>
    //       </td>
    //       <tr>
    //       <td>
    //       Quantity:
    //       <%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:N2}") %>
    //       </td>
    //       <tr>
    //       <td>
    //       Item:
    //       <%# DataBinder.Eval(Container.DataItem, "StringValue") %>
    //       </td>
    //       <tr>
    //       <td>
    //       Order Date:
    //       <asp:checkbox id=chk1 checked='<%# DataBinder.Eval(Container.DataItem, "BoolValue") %>' runat="server"/>
    //       </td>
    //       </tr>
    //       </table>
    //       </ItemTemplate>
    //       </asp:repeater>
    //       <hr hight="1">
    //         </form>
    //         </body>
    //         </HTML>

    DataList同理。

    原文出处:http://dev.csdn.net/develop/article/30/30318.shtm

    <%@ Page Language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="comeday.Result" %>

  • 相关阅读:
    SQL Azure (17) SQL Azure V12
    Microsoft Azure News(5) Azure新DV2系列虚拟机上线
    Azure Redis Cache (3) 在Windows 环境下使用Redis Benchmark
    Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)
    Windows Azure Virtual Machine (31) 迁移Azure虚拟机
    Windows Azure Web Site (16) Azure Web Site HTTPS
    Azure China (12) 域名备案问题
    一分钟快速入门openstack
    管理员必备的Linux系统监控工具
    Keepalived+Nginx实现高可用和双主节点负载均衡
  • 原文地址:https://www.cnblogs.com/101rico/p/2867350.html
Copyright © 2011-2022 走看看