repeater分页显示

来源:互联网 发布:疯狂java讲义 mobi 编辑:程序博客网 时间:2024/06/08 09:40

Reapter控件的分页显示

在reapter控件的分页显示共有两种解决方案,一种是将数据表中的数据一次全部读出,一种是只读出本页要显示的数据,很明显,当数据两很大的时候,前者会占用很大的系统资源,所以本文采用后面的解决方案;在完成本文的练习之后,你会创建出下面的效果:
Reapter控件的分页显示
对程序做一个简单的介绍,先增加一个reapter控件,命名为reTest用来显示数据,然后增加四个button,用来实现对分页的控制,即上一页,下一页,第一页,最后一页的控制,
分别命名为btnPre,btnNext,btnFirst,btnLast,再增加两个lable,用来显示总页数和当前的页数,分别命名为lblPageCount,lblCurrentPage,然后将这些button和lable放到一个panel中。
下面是程序的原代码,如果你有什么不明白的地方可以直接留言提问:
你可以在这里下载原文件Paged.rar
 
 
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 System.Data.SqlClient;
namespace Paged
{
 /// <summary>
 /// WebForm1 的摘要说明。
 /// </summary>
 public class WebForm1 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Button btnFirst;
  protected System.Web.UI.WebControls.Button btnpre;
  protected System.Web.UI.WebControls.Button btnNext;
  protected System.Web.UI.WebControls.Button btnLast;
  protected System.Web.UI.WebControls.Repeater rpTest;
  private int PageCount;//共有好多页
  private int PageSize;//一页有好多条记录
  private int CurrentPage;//当前是第几页
  private int RecordCount;//记录有多少条
  private int Temp;//临时变量  
  protected System.Web.UI.WebControls.Label lblPageCount;
  protected System.Web.UI.WebControls.Panel Panel1;
  protected System.Web.UI.WebControls.Label lblCurrentPage;
  
   
  private void Page_Load(object sender, System.EventArgs e)
  {
   PageSize = 6; 
   if(!Page.IsPostBack)//第一次请求执行
  
   { 
    RecordCount = GetRecord();//订算总共有多少条记录
    
       if(RecordCount%PageSize>0)
       {
     PageCount = (RecordCount/PageSize)+1;
       }
       else
      {
     PageCount = (RecordCount/PageSize);
      }
    this.lblPageCount.Text = PageCount.ToString();//显示总页数
    ViewState["PageCount"] = PageCount;
    ViewState["CurrentPage"] = 0;  
    
    this.btnFirst.Enabled=false;
    this.btnpre.Enabled=false;
    if(Int32.Parse(ViewState["CurrentPage"].ToString())+1==PageCount)
    {
     this.btnNext.Enabled=false;
     this.btnLast.Enabled=false;
    }
    this.lblCurrentPage.Text=((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();
    DataBindrp();    
   }
   

   
          
   
  }
  #region 创建链接
  public SqlConnection CreateSqlConnection ()
  {
   string ConnectionString = "server=.;database=pubs;user=sa;password=";
   return new SqlConnection(ConnectionString);
  }
  #endregion  
  #region 计算记录的行数
  public  int GetRecord()
  {
   int Count ;
            string CountString = "SELECT COUNT(*) AS countrecord FROM AUTHORS";
   SqlConnection MyConnection = CreateSqlConnection ();
   MyConnection.Open();
   SqlCommand MyCommand = new SqlCommand(CountString,MyConnection);
   SqlDataReader MyDr = MyCommand.ExecuteReader();
   if(MyDr.Read())
   {
    Count = Int32.Parse(MyDr["countrecord"].ToString());
   }
   else
   {
    Count = 0;
   }
   MyDr.Close();
   return Count;
  }
  #endregion
  #region 绑定repeater
  public void DataBindrp()
  {
   this.rpTest.DataSource= CreateSource();
   this.rpTest.DataBind();
  }
  #endregion
  #region  产生数据源
  ICollection CreateSource()
  {
   int StartIndex;
      string SelectString = "SELECT * FROM AUTHORS ";
   StartIndex = Int32.Parse(ViewState["CurrentPage"].ToString())*PageSize;
   SqlConnection MyConnection = CreateSqlConnection ();
   DataSet MyDs = new DataSet();
   SqlDataAdapter MyDa = new SqlDataAdapter(SelectString,MyConnection);
   MyDa.Fill(MyDs,StartIndex,PageSize,"Source");
   return MyDs.Tables["Source"].DefaultView;
  }
  #endregion

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.btnFirst.Click += new System.EventHandler(this.btnFirst_Click);
   this.btnpre.Click += new System.EventHandler(this.btnpre_Click);
   this.btnNext.Click += new System.EventHandler(this.btnNext_Click);
   this.btnLast.Click += new System.EventHandler(this.btnLast_Click);
   this.Load += new System.EventHandler(this.Page_Load);
  }
  #endregion
  private void btnFirst_Click(object sender, System.EventArgs e)
  {
   if(Int32.Parse(ViewState["CurrentPage"].ToString())>0&&Int32.Parse(ViewState["PageCount"].ToString())>1)
   {
    ViewState["CurrentPage"]=0;
    this.btnNext.Enabled=true;
    this.btnLast.Enabled=true;
    this.btnpre.Enabled=false;
    this.btnFirst.Enabled=false;
    this.lblCurrentPage.Text=((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();
    DataBindrp();
   }
   else
   {
    this.btnpre.Enabled=false;
    this.btnFirst.Enabled=false;
   }
  
  }
  private void btnpre_Click(object sender, System.EventArgs e)
  {
   if(Int32.Parse(ViewState["CurrentPage"].ToString())>0)
   {
    ViewState["CurrentPage"]=Int32.Parse(ViewState["CurrentPage"].ToString())-1;
    this.btnNext.Enabled=true;
    this.btnLast.Enabled=true;
    this.lblCurrentPage.Text=((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();
    DataBindrp();
   }
   else
   {
    this.btnpre.Enabled=false;
    this.btnFirst.Enabled=false;
   }
  
  }
  private void btnNext_Click(object sender, System.EventArgs e)
  {
   if(Int32.Parse(ViewState["CurrentPage"].ToString())<(Int32.Parse(ViewState["PageCount"].ToString()))-1)
   {
    ViewState["CurrentPage"]=Int32.Parse(ViewState["CurrentPage"].ToString())+1;
    this.btnFirst.Enabled=true;
    this.btnpre.Enabled=true;
    this.lblCurrentPage.Text=((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();
    DataBindrp();
   }
   else
   {
    this.btnNext.Enabled=false;
    this.btnLast.Enabled=false;
   }
   
  }
  private void btnLast_Click(object sender, System.EventArgs e)
  {
   if(Int32.Parse(ViewState["CurrentPage"].ToString())<(Int32.Parse(ViewState["PageCount"].ToString()))-1)
   {
    ViewState["CurrentPage"]=(Int32.Parse(ViewState["PageCount"].ToString())-1);
    this.btnFirst.Enabled=true;
    this.btnpre.Enabled=true;
    this.btnNext.Enabled=false;
    this.btnLast.Enabled=false;
    this.lblCurrentPage.Text=((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();
    DataBindrp();
   }
   else
   {
    this.btnNext.Enabled=false;
    this.btnLast.Enabled=false;
   }
  
  }
  
 }
}
原创粉丝点击