• ASP.NET动态网站制作(25)-- ADO.NET(4)


    前言:这节课老师主要讲网页当中内容的分页效果,自己写一个分页控件。

    内容

      1.首先写出HTML代码:

    1 <div id="pager">
    2     <%=GetPagerHtml()%>
    3 </div>

      2.CSS代码:

     1 #pager {
     2     margin-top: 10px;
     3 }
     4 #pager div {
     5     float: left;
     6     margin-right: 10px;
     7     width: 55px;
     8     height: 26px;
     9     background-color: #019875;
    10     text-align: center;
    11     line-height: 26px;
    12     color:#fff;
    13 }
    14 #pager a {
    15     color: #fff;
    16     display: block;
    17     text-decoration: none;
    18 }
    19 #pager .nonbg {
    20     background-color:#91CEBE;
    21 }

       3.SQL语句实现分页效果:

    1 select top 10 *
    2 from
    3 (
    4     select ROW_NUMBER() over (order by NewsId) as RowNumber,NewsId,Title,CreatTime,NewsClass,ViewCount from RNews
    5 )A
    6 where RowNumber > 10*(2-1)

       4.网页中的代码实现,涉及的细节比较多,包括字符串拼凑,分页页数计算等:

     1 private int PageCount = 0;
     2         private int PageSize = 10;    //一页多少条数据
     3         private int _pageIndex;
     4         public int PageIndex
     5         {
     6             get
     7             {
     8                 try
     9                 {
    10                     _pageIndex = Request.QueryString["page"] == null ? 1 : Convert.ToInt32(Request.QueryString["page"].ToString());
    11                 }
    12                 catch
    13                 {
    14                     _pageIndex = 1;
    15                 }
    16                 return _pageIndex;
    17             }
    18             set { _pageIndex = value; }
    19         }
    20         public int GetRecordCount()    //获得总页数
    21         {
    22             string sqlStr = "select count(*) from RNews";
    23             int i = Convert.ToInt32(SqlHelper.ExecuteScalar(CommandType.Text, sqlStr, null));
    24             return i;
    25         }
     1      /// <summary>
     2         /// 获取分页
     3         /// </summary>
     4         /// <returns></returns>
     5         public string GetPagerHtml()
     6         {
     7             StringBuilder sb = new StringBuilder();
     8             sb.Append(@"<div><a href=""/RNewsM.aspx?page=1"">首页</a></div>");
     9             if (PageIndex == 1)
    10             {
    11                 sb.Append(@"<div  class=""nonbg"">上一页</div>");
    12             }
    13             else
    14             {
    15                 sb.Append(string.Format(@"<div><a href=""/RNewsM.aspx?page={0}"">上一页</a></div>", PageIndex - 1));
    16             }
    17             if (GetRecordCount() % PageSize == 0)
    18             {
    19                 PageCount = GetRecordCount() / PageSize;
    20             }
    21             else
    22             {
    23                 double d = GetRecordCount() / PageSize;
    24                 PageCount = Convert.ToInt32(Math.Ceiling(d));
    25             }
    26             if (PageIndex == PageCount)
    27             {
    28                 sb.Append(@"<div  class=""nonbg"">下一页</div>");
    29             }
    30             else
    31             {
    32                 sb.Append(string.Format(@"<div><a href=""/RNewsM.aspx?page={0}"">下一页</a></div>", PageIndex + 1));
    33             }
    34             sb.Append(string.Format(@"<div><a href=""/RNewsM.aspx?page={0}"">尾页</a></div>", PageCount));
    35             sb.Append(string.Format(@"<div  class=""nonbg"">{0}/{1}</div>", PageIndex, PageCount));
    36             return sb.ToString();
    37         }

      5.Session,cookie:请求信息(请求报文):Request;响应信息(响应报文):Response;请求报文+响应报文=上下文对象context。

    1 //登录页面
    2 Session["username"]=username;
    3 
    4 //登录进去的页面
    5 if(Session["username"]==null)
    6 {
    7   Response.Redirect("Login.aspx");  
    8 }

       session返回的key是存储在服务端浏览器的缓存里面的,所以一旦页面关闭之后,key就不存在了,session就取不到。放在session中的数据较安全,但是数据存储到服务端太多,响应会太慢。一般使用cookie加密。

     1 //登录页面
     2 Response.Cookies["username"].Value=username;
     3 Response.Cookies["pwd"].Value=pwd;
     4 Response.Redirect("xxx.aspx");
     5 
     6 //登陆后的页面
     7 if (Request.Cookies["username"] == null || Request.Cookies["pwd"] == null)
     8 {
     9     Response.Redirect("Login.aspx");
    10 }

      客户端向服务端发送请求,服务端返回cookie的值给客户端,默认情况下(没有设置过期时间的情况下),保存在浏览器的缓存里面。如果cookie设置一个过期时间,那么cookie就保存在客户端的硬盘上,直到过期时间达到或者手动的去删除cookie,它才会消失。

    //设置登录信息过期时间
    Response.Cookies["username"].Expires = DateTime.Now.AddHours(1);

    后记:看懂代码,多练习。

  • 相关阅读:
    事务(十四)
    事务(十三)
    事务(十二)
    事务(十一)
    事务(十)
    try中定义输入流报错:Try-with-resources are not supported at language level '5'
    IDEA新建时没有java class选项
    Hex编码
    Git Bash安装及常规使用
    PostgreSQL数据库
  • 原文地址:https://www.cnblogs.com/zoe-yan/p/4942002.html
Copyright © 2020-2023  润新知