• 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" %>

  • 相关阅读:
    hadoop 2.5.1 、Hadoop 2.7 Hadoop 2.6
    二 JDK + mysql + yum + rpm
    一 SSH 无密码登陆 & Linux防火墙 & SELinux关闭
    ZooKeeper 配置注意事项 zoo.cfg
    ZooKeeper 特性
    分布式锁
    悲观锁和乐观锁
    windows上配置mysql主从复制
    C# 同步调用、异步调用、异步回调
    C#方法回调
  • 原文地址:https://www.cnblogs.com/101rico/p/2867350.html
Copyright © 2020-2023  润新知