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);

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

原文地址:https://www.cnblogs.com/zoe-yan/p/4942002.html