GridView自定义分页/GridView自定义分页类/GridView自定义分页更简单

今天查询相关资料时,看到这个类写的很好,就转过来了啊,感谢原创者!

下面直接是类的代码,一看就明白!

 

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='" + 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' height='20px' type='text' style='width:25px;'><input name='btnGo' type='button' height='20px' id='btnGo' value='Goto' onclick=\"javascript:window.location.href='" + 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
  
       #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

    }
}

 

 

posted on 2008-11-24 17:18  心的感觉  阅读(781)  评论(4编辑  收藏  举报

导航