ASPX之C#分页代码

<%@ Import Namespace="System"%>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.OleDb"%>
<%@ Import Namespace="sql_functin"%>
前台代码:
<script runat="server">
      int totalcount;//总记录数
      int currentpage;//当前页
      int PageSize = 4;//分页大小
      int totalpage;//记录总页数
      protected void Page_Load(object sender, EventArgs e)
      {
      ///总记录数
       totalcount = sql_functin.PageDS.recordcounts("select * from news");
      //当前页
       //计算总页数;totalpage
       if (totalcount / PageSize == 0)
       {
           totalpage = totalcount / PageSize;
       }
       else
       {
           totalpage = totalcount / PageSize + 1;
       }
        
       if (Request.QueryString["page"]==null)///指地址栏中没有PAGE字符
         {
              currentpage = 1;
         }
       if (Request.QueryString["page"] != null)
       {
          // 判断是否为数值
           if (sql_functin.querystring.isNumber(Request.QueryString["page"])==false)
           {
               currentpage = 1;
           }
           else///是数值
           {
               if (Request.QueryString["page"].Length > 10 || Request.QueryString["page"].Length < 1)///防止Convert.ToInt32抛出异常或者防止地址栏所得到的page=这样的值
               {
                   currentpage = 1;
                   //Response.End();
               }
               else
               {
                   if (Convert.ToInt32(Request.QueryString["page"]) > totalpage)///是否大于总页数
                   {
                       currentpage = totalpage;
                   }
                   else
                   {
                       if (Convert.ToInt32(Request.QueryString["page"]) <=1)///是否小于页数1
                       {
                           currentpage = 1;
                       }
                       else
                       {
                         currentpage = Convert.ToInt32(Request.QueryString["page"]);  
                       }
                   }
               }
           }
       }
       else
       {
           currentpage = 1;
       }
       detail.DataSource = sql_functin.PageDS.datas("select * from news",currentpage,PageSize,"news");//填充数据
       detail.DataBind();
       pagelist.Text = sql_functin.PageDS.pagination(totalcount, PageSize, currentpage, "news_sort2.aspx?ID=" + Request.QueryString["ID"], Convert.ToInt32(Request.QueryString["ID"].ToString()), currentpage, PageSize).ToString();//分页/
    }
</script>


<%--HTML代码主体部分--%>

<TABLE cellSpacing=0 cellPadding=0 width=1004 align=center border=0>
   <TBODY>
   <TR>
     <TD vAlign=top width=107></TD>
     <TD width=26 vAlign=top background="image/line1.jpg" style="background-repeat: repeat;">&nbsp;</TD>
     <TD vAlign=top>
         <table width="99%">
             <tr>
                 <td colspan="3" align="center"><%--数据绑定--%>
                      <asp:DataList ID="detail" runat="server" Width="99%">
                       <HeaderTemplate><TABLE cellSpacing=0 cellPadding=0 width="100%" border=0><TBODY></HeaderTemplate>
                       <ItemTemplate><tr>
                             <td width=12 height=8><IMG height="5" src="image/main_but_09_1.gif" width="6"></td>
                             <td><A href="news_type.aspx?ID=<%#Eval("news_ID") %>"><%#Eval("news_title") %></A>&nbsp;&nbsp;<font color="666666"><%#Eval("news_time") %></font></TD>
                           </tr>
                           <tr>
                             <td colspan="2" background="image/skim.gif" height="1"></td>
                             </tr></ItemTemplate>
                       <FooterTemplate></TBODY></TABLE></FooterTemplate>
                       </asp:DataList><%--数据绑定--%>
                     </td>
             </tr>
             <tr>
                 <td colspan="3" style="width: 715px" align="right"><div align="center">
                     <%--分页代码--%><asp:Label ID="pagelist" runat="server"></asp:Label><%--分页代码--%></td>
             </tr>
         </table>
     </TD></TR></TBODY></TABLE>
    
     后台代码命名sql_functin空间代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Collections;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using Microsoft.VisualBasic;
using System.Data.SqlClient;
using System.Text;

namespace sql_functin
{
     public class SQLDB
     {
         /// <summary>
         /// 显示标题栏信息
         /// </summary>
         ///
         public string strSQL;///定义公用SQL语句
         public static string titless = ConfigurationManager.AppSettings["titles"].ToString();      
         /// <summary>
         /// 调用类结构开始
         /// </summary>
         public static readonly string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + ConfigurationManager.AppSettings["connectionString"].ToString();

         /// #region 数据库连接对象操作
         /// <summary>
         /// 打开数据库连接 ///针对ACCESS数据库
         /// </summary>
         public static OleDbConnection opendatabase()
         {
             try
             {
                 OleDbConnection conn = new OleDbConnection(connectionString);
                 conn.Open();
                 return conn;
             }
             catch (Exception ex)
             {
                 throw new Exception(ex.Message);
             }
         }

         ///#endregion
         /// <summary>
         /// 关闭数据库连接释放资源
         /// </summary>
         /// 数据库连接对象

         public static void closedatabase(OleDbConnection conn)
         {
             try
             {
                 if (conn != null)
                 {
                     conn.Close();
                     conn.Dispose();
                 }
             }
             catch (Exception ex)
             {
                 throw new Exception(ex.Message);
             }
         }

        
         /// <summary>
         ///
         /// </summary>
         /// <param name="strSQL"></param>
         /// <returns></returns>
         /// #region 返回传入SQL语句而得到的所有具体值
         ///填充到数据源中
         public static DataSet getvalues(string strSQL)
         {
             try
             {
                 OleDbConnection conn = opendatabase();
                 DataSet ds = new DataSet();
                 OleDbDataAdapter da = new OleDbDataAdapter(strSQL, conn);
                 da.Fill(ds);
                 closedatabase(conn);
                 return ds;
             }
             catch (Exception e)
             {
                 throw new Exception(e.Message);
             }
         }


         /// <summary>
         /// 返回指定Sql语句的DataTable
         /// </summary>
         /// <param name="strSQL">传入的Sql语句</param>
         /// <returns>DataTable</returns>
         public static DataTable getvalues_Datatable(string strSQL)
         {
             try
             {
                 OleDbConnection conn = opendatabase();
                 DataTable table = new DataTable();
                 OleDbDataAdapter da = new OleDbDataAdapter(strSQL, conn);
                 da.Fill(table);
                 closedatabase(conn);
                 return table;
             }
             catch (Exception e)
             {
                 throw new Exception(e.Message);
             }
         }

         ///
         ///调用类结构结束
     }

     //pageDS用来处理分页

     public class PageDS
     {
         //public static string sqlstrings;
         //public static int PageSize=10;//定义分页大小
         //public static int pages;//定义总页数
         //public static int pagecout;//总的记录条数
         //public static int currentpage;

         public static int recordcounts(string sqls)   ///计算总共有多少条记录
         {
             string strsqls = sqls;
             int allcount = 0;
            
             OleDbConnection conn = sql_functin.SQLDB.opendatabase();
             OleDbCommand da = new OleDbCommand(sqls,conn);
             OleDbDataReader cms = da.ExecuteReader();
             while (cms.Read())
             {
                 allcount += 1;
             }
             return allcount;


         }

       
         public static DataView datas(string sqls,int currentpage,int pagesize,string table)
         {
             int startcount;
             if (currentpage < 1)
             {
                 startcount = currentpage * pagesize;
             }
             else
             {
                 startcount = (currentpage-1) * pagesize;
             }

             OleDbConnection conn = sql_functin.SQLDB.opendatabase();
             DataSet ds = new DataSet();
             OleDbDataAdapter da = new OleDbDataAdapter(sqls,conn);
             da.Fill(ds, startcount, pagesize,table.ToString());
             return ds.Tables[0].DefaultView;
         }

         /// </summary>
         /// <param name="total">总记录数</param>
         /// <param name="per">每页记录数</param>
         /// <param name="page">当前页数</param>
         /// <param name="query_string">Url参数</param>
         /// <param name="ID">参数</param>
         /// <param name="currentpage">当前页</param>
         /// <param name="PageSize">每页分页大小</param>
         public static string pagination(int total, int per, int page, string query_string, int ID, int currentpage, int PageSize)
         {
             int allpage = 0;
             int next = 0;
             int pre = 0;
             int startcount = 0;
             int endcount = 0;
             string pagestr = "";
             if (page < 1) { page = 1; }
             //计算总页数
             if (per != 0)
             {
                 allpage = (total / per);
                 allpage = ((total % per) != 0 ? allpage + 1 : allpage);
                 allpage = (allpage == 0 ? 1 : allpage);
             }
             next = page + 1;
             pre = page - 1;
             startcount = (page + 5) > allpage ? allpage - 9 : page - 4;//中间页起始序号
             //中间页终止序号
             endcount = page < 5 ? 10 : page + 5;
             if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
             if (allpage < endcount) { endcount = allpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
             pagestr = "共<font color=/"#ff000/">" + allpage + "</font>页&nbsp;共有<font color=/"#ff0000/">" + total + "</font>条记录&nbsp;当前页<font color=/"#ff0000/">" + currentpage + "</font>/" + allpage + "&nbsp;每页<font color=/"ff0000/">" + PageSize + "</font>条&nbsp;";

             pagestr += page > 1 ? "<a href=/"" + query_string + "&page=1/">首&nbsp页</a>&nbsp;&nbsp;<a href=/"" + query_string + "&page=" + pre + "/">上一页</a>" : "首&nbsp页 上一页";
             //中间页处理,这个增加时间复杂度,减小空间复杂度
             for (int i = startcount; i <= endcount; i++)
             {
                 pagestr += page == i ? "&nbsp;&nbsp;<font color=/"#ff0000/">" + i + "</font>" : "&nbsp;&nbsp;<a href=/"" + query_string + "&page=" + i + "/">" + i + "</a>";
             }
             pagestr += page != allpage ? "&nbsp;&nbsp;<a href=/"" + query_string + "&page=" + next + "/">下一页</a>&nbsp;&nbsp;<a href=/"" + query_string + "&page=" + allpage + "/">尾&nbsp页</a>" : " 下一页 尾&nbsp页";

             return pagestr;
         }
     }

  

     /// <summary>
     /// 类querystring判断是否为数字
     /// </summary>
     public class querystring
     {
         public static bool isNumber(string s)
         {
             int Flag = 0;
             char[] str = s.ToCharArray();
             for (int i = 0; i < str.Length; i++)
             {
                 if (Char.IsNumber(str[i]))
                 {
                     Flag++;
                 }
                 else
                 {
                     Flag = -1;
                     break;
                 }
             }
             if (Flag > 0)
             {
                 return true;
             }
             else
             {
                 return false;
             }
         }
     }
  
   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值