前言:这节课老师主要讲网页当中内容的分页效果,自己写一个分页控件。
内容:
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);
后记:看懂代码,多练习。