阅读文章

.Net通用分页(可以选择页码的显示样式,且有中英选择)

[日期:2008-03-31] 来源:  作者: [字体: ]

     using System;
  using System.Data;
  using System.Configuration;
  using System.Collections;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Web.UI.HTMLControls;
  
  /**//// <summary>
  /// 启程 通用分页类 www.letwego.cn
  /// </summary>
  public class Pageing
  {
   成员#region 成员
  
   /**//// <summary>
   /// 数据源 Table
   /// </summary>
   public DataTable dtblTableww = new DataTable();
  
   /**//// <summary>
   /// 每页记录数
   /// </summary>
   public int intPageSizeww = 20;
  
   /**//// <summary>
   /// 需要获取第几页的数据,从 1 开始
   /// </summary>
   public int intPageNowww = 1;
  
   /**//// <summary>
   /// 首页 显示样式
   /// </summary>
   public string strFirstww = "";
  
   /**//// <summary>
   /// 上一页 显示样式
   /// </summary>
   public string strPrevww = "";
  
   /**//// <summary>
   /// 下一页 显示样式
   /// </summary>
   public string strNextww = "";
  
   /**//// <summary>
   /// 尾页 显示样式
   /// </summary>
   public string strLastww = "";
  
   /**//// <summary>
   /// 跳转 的url链接
   /// </summary>
   public string strTurnUrlww = "";
  
   /**//// <summary>
   /// 跳转的url链接的参数前面不要加?或&
   /// </summary>
   public string strOptionww = "";
  
  
   private string strCountww = ""; //共N条信息
   private string strPageww = ""; //第N页/共N页
   private string strTurnww; //跳转控件
  
   #endregion
  
   属性#region 属性
  
   private int intRsCounww = 0; //记录总数
  
   /**//// <summary>
   /// 总记录数
   /// </summary>
   public int GetRsCount
   {
   get
   {
   return this.intRsCounww;
   }
   }
  
   private int intPageCountww = 0; //总页数
  
   /**//// <summary>
   /// 总页数
   /// </summary>
   public int GetPageCount
   {
   get
   {
   return this.intPageCountww;
   }
   }
  
   private string strPageShowww = ""; //显示页码的字符串
   /**//// <summary>
   /// 显示页码的字符串
   /// </summary>
   public string GetPageShow
   {
   get
   {
   return this.strPageShowww;
   }
   }
  
   #endregion
  
   初始构造#region 初始构造
   /**//// <summary>
   /// 初始构造
   /// </summary>
   public Pageing()
   {
   //首页
   strFirstww = "";
   //上一页
   strPrevww = "";
   //下一页
   strNextww = "";
   //尾页
   strLastww = "";
   //跳转控件
   strTurnww = "";
   //显示页码的字符串
   strPageShowww = "";
   //当前页
   intPageNowww = GetNumeric(GetRequest("Page"));
  
   if (intPageNowww == 0)
   {
   intPageNowww = 1;
   }
   }
   #endregion
  
   处理分页及显示页码#region 处理分页及显示页码
   /**//// <summary>
   /// 分页,返回分页后的数据 Table
   /// </summary>
   /// <param name="bolCount">是否显示 共N条信息</param>
   /// <param name="bolPage">是否显示 第N页/共N页</param>
   /// <param name="bolFirst">是否显示 首页</param>
   /// <param name="bolLast">是否显示 尾页</param>
   /// <param name="bolTurn">是否显示 跳转控件</param>
   /// <param name="IsEnglish">是否 用中文显示</param>
   /// <returns>返回分页后的数据 Table</returns>
   public DataTable BeginPage(bool bolCount, bool bolPage, bool bolFirst, bool bolLast, bool bolTurn, bool IsChinese)
   {
  
   //记录总数
   intRsCounww = dtblTableww.Rows.Count;
  
   //总页数
   intPageCountww = (intRsCounww + intPageSizeww - 1) / intPageSizeww;
  
   //超出最大页码
   if (intPageNowww > intPageCountww)
   {
   intPageNowww = intPageCountww;
   }
  
   //中文分页
   if (IsChinese)
   {
   //跳转
   strTurnww = "<input value='" + intPageNowww.ToString() + "' id='txtPageGo' name='txtPageGo' type='text' style='width:25px;'><input name='btnGo' type='button' id='btnGo' value='跳转' onclick=\"javascript:window.location.href='http://www.aspcool.com/lanmu/" + strTurnUrlww + "?page=' + document.getElementById('txtPageGo').value + '" + "&" + strOptionww + "'\">";
   //共N条信息
   strCountww = "共" + intRsCounww.ToString() + "条信息";
   //第N页/共N页
   strPageww = "第" + intPageNowww.ToString() + "页/共" + intPageCountww.ToString() + "页";
  
   if (strFirstww == "")
   {
   strFirstww = "首页";
   strPrevww = "上一页";
   strNextww = "下一页";
   strLastww = "尾页";
   }
   }
   else//英文文分页
   {
   //跳转
   strTurnww = "<input value='" + intPageNowww.ToString() + "' id='txtPageGo' name='txtPageGo' type='text' style='width:25px;'><input name='btnGo' type='button' id='btnGo' value='Goto' onclick=\"javascript:window.location.href='http://www.aspcool.com/lanmu/" + strTurnUrlww + "?page=' + document.getElementById('txtPageGo').value + '" + "&" + strOptionww + "'\">";
   //共N条信息
   strCountww = "Total " + intRsCounww.ToString() + " Infos";
   //第N页/共N页
   strPageww = " " + intPageNowww.ToString() + "/" + intPageCountww.ToString() + " ";
  
   if (strFirstww == "")
   {
   strFirstww = " First ";
   strPrevww = " Previous ";
   strNextww = " Next ";
   strLastww = " Last ";
   }
   }
  
  
   DataTable MyTable;
  
   int intGetFirstRs = 0;//获取本页数据的开始下标
   int intGetLastRs = 0;//获取本页数据的结束下标
  
   string strFirstww2;
   string strPrevww2;
   string strNextww2;
   string strLastww2;
  
  
   //没有记录
   if (intRsCounww <= 0)
   {
   strPageShowww = strCountww;
   MyTable = dtblTableww;
   }
   //有记录
   else
   {
   //只有一页
   if (intPageCountww <= 1)
   {
   strPageShowww = strCountww + "  " + strPageww;
   MyTable = dtblTableww;
   }
   //不止一页
   else
   {
   //第一页
   if (intPageNowww == 1)
   {
   strFirstww2 = strFirstww;
   strPrevww2 = strPrevww;
   }
   else
   {
   strFirstww2 = "<a href=\"" + strTurnUrlww + "?page=1" + "&" + strOptionww + "\">" + strFirstww + "</a>";
   strPrevww2 = "<a href=\"" + strTurnUrlww + "?page=" + Convert.ToString(intPageNowww - 1) + "&" + strOptionww + "\">" + strPrevww + "</a>";
   }
  
   //最后一页
   if (intPageNowww == intPageCountww)
   {
   strNextww2 = strNextww;
   strLastww2 = strLastww;
   }
   else
   {
   strNextww2 = "<a href=\"" + strTurnUrlww + "?page=" + Convert.ToString(intPageNowww + 1) + "&" + strOptionww + "\">" + strNextww + "</a>";
   strLastww2 = "<a href=\"" + strTurnUrlww + "?page=" + intPageCountww + "&" + strOptionww + "\">" + strLastww + "</a>";
   }
  
   //----处理显示页码-----------
   if (bolCount == true)//共N条信息
   {
   strPageShowww = strPageShowww + "  " + strCountww;
   }
   if (bolPage == true)//第N页/共N页
   {
   strPageShowww = strPageShowww + "  " + strPageww;
   }
   if (bolFirst == true) //首页
   {
   strPageShowww = strPageShowww + "  " + strFirstww2;
   }
   strPageShowww = strPageShowww + "  " + strPrevww2;//上一页
   strPageShowww = strPageShowww + "  " + strNextww2;//下一页
   if (bolLast == true)//尾页
   {
   strPageShowww = strPageShowww + "  " + strLastww2;
   }
   if (bolTurn == true)//跳转控件
   {
   strPageShowww = strPageShowww + "  " + strTurnww;
   }
  
  
   //----处理返回数据-----------
   intGetFirstRs = (intPageNowww - 1) * intPageSizeww;
   intGetLastRs = intPageNowww * intPageSizeww - 1;
  
   //获取结束数据下标大于总记录数时
   if (intGetLastRs >= intRsCounww)
   {
   intGetLastRs = intRsCounww - 1;
   }
  
   //循环获取数据
   MyTable = dtblTableww.Clone();
   for (int I = intGetFirstRs; I <= intGetLastRs; I++)
   {
   DataRow MyRow = dtblTableww.Rows[I];
   MyTable.ImportRow(MyRow);
   }
   }
   }
   return MyTable;
   }
   #endregion
  
  
   将字符串转换成整数#region 将字符串转换成整数
   /**//// <summary>
   /// 将字符串转换成整数
   /// </summary>
   /// <param name="strValue">将字符传转换成整数</param>
   /// <returns>int</returns>
   private int GetNumeric(string strValue)
   {
  
   int IReturn;
  
   if (strValue == null)
   {
   IReturn = 0;
   return IReturn;
   }
   try
   {
   IReturn = Convert.ToInt32(strValue);
   }
   catch
   {
   IReturn = 0;
   }
   return IReturn;
   }
   #endregion
  
   获取Request值#region 获取Request值
   /**//// <summary>
   /// 获取Request值
   /// </summary>
   /// <param name="strRequestName">Request名称</param>
   /// <returns>null则为空</returns>
   private string GetRequest(string strRequestName)
   {
  
   if (HttpContext.Current.Request["" + strRequestName + ""] != null)
   {
   return HttpContext.Current.Request["" + strRequestName + ""];
   }
   else
   {
   return "";
   }
   }
   #endregion
  
  
   --------------------------------调用实例--------------------------#region --------------------------------调用实例--------------------------
   /**////// <summary>
   ///// 调用实例
   ///// </summary>
   //protected void BindData()
   //{
   // Student MyStudent = new Student();
  
   // DataTable MyDataTable = MyStudent.GetList("LIST", null);
  
   // Pageing MyPageing = new Pageing();
   // MyPageing.dtblTableww = MyDataTable;//数据源
   // MyPageing.intPageSizeww = 4;//每页显示多少条
   // MyPageing.strTurnUrlww = "MyRepeater.ASPx";//跳转页面
   // MyPageing.strOptionww = "DoWhat=List";//跳转页面带的所有参数
  
   // //获取当前页数据
   // this.DataList1.DataSource = MyPageing.BeginPage(true, true, true, true, true, false);
   // //获取当前页分页显示
   // this.Label1.Text = MyPageing.GetPageShow;
  
   // this.DataList1.DataBind();
   //}
   #endregion
  
   简要说明#region 简要说明
   //.Net通用分页(可以选择页码的显示样式,且有中英选择),自己写的,还不完善,请朋友们多多指点.
   //大概思路是:根据传进来的DataTable,每页显示多少条记录,当前要显示第几页(从Request中获得),
   //来获取当前页要显示的数据(比如DataTable共有123条记录,每页显示10条,第2页,则取DataTable的Rows10~19),
   //再根据其它传进来的参数设置分页及显示的样式等.
   //当然,可能这种方法的效率等某些方面可能不好,只是个例子,可以根据自己的应用修改.
   //效果图:http://www.cnblogs.com/images/cnblogs_com/84ww/128905/r_page.GIF
   #endregion
  
  
  }  


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:Windows Mobile 进阶系列.WCF Mobile(Part 2)
下一篇:[初入职场] 不成文的期望
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款