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='跳转' οnclick=\"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' οnclick=\"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://images.cnblogs.com/cnblogs_com/84ww/128905/r_page.GIF 
       #endregion 

    }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值