ASP.NET动态网站制作(25)-- ADO.NET(4)
前言:这节课老师主要讲网页当中内容的分页效果,自己写一个分页控件。
内容:
1.首先写出HTML代码:
<div id="pager">
<%=GetPagerHtml()%>
3 </div>
2.CSS代码:
#pager {
margin-top: 10px;
}
#pager div {
float: left;
margin-right: 10px;
width: 55px;
height: 26px;
background-color: #019875;
text-align: center;
line-height: 26px;
color:#fff;
}
#pager a {
color: #fff;
display: block;
text-decoration: none;
}
#pager .nonbg {
background-color:#91CEBE;
}
3.SQL语句实现分页效果:
select top 10 *
from
(
select ROW_NUMBER() over (order by NewsId) as RowNumber,NewsId,Title,CreatTime,NewsClass,ViewCount from RNews
)A
where RowNumber > 10*(2-1)
4.网页中的代码实现,涉及的细节比较多,包括字符串拼凑,分页页数计算等:
private int PageCount = ;
private int PageSize = ; //一页多少条数据
private int _pageIndex;
public int PageIndex
{
get
{
try
{
_pageIndex = Request.QueryString["page"] == null ? : Convert.ToInt32(Request.QueryString["page"].ToString());
}
catch
{
_pageIndex = ;
}
return _pageIndex;
}
set { _pageIndex = value; }
}
public int GetRecordCount() //获得总页数
{
string sqlStr = "select count(*) from RNews";
int i = Convert.ToInt32(SqlHelper.ExecuteScalar(CommandType.Text, sqlStr, null));
return i;
}
/// <summary>
/// 获取分页
/// </summary>
/// <returns></returns>
public string GetPagerHtml()
{
StringBuilder sb = new StringBuilder();
sb.Append(@"<div><a href=""/RNewsM.aspx?page=1"">首页</a></div>");
if (PageIndex == )
{
sb.Append(@"<div class=""nonbg"">上一页</div>");
}
else
{
sb.Append(string.Format(@"<div><a href=""/RNewsM.aspx?page={0}"">上一页</a></div>", PageIndex - ));
}
if (GetRecordCount() % PageSize == )
{
PageCount = GetRecordCount() / PageSize;
}
else
{
double d = GetRecordCount() / PageSize;
PageCount = Convert.ToInt32(Math.Ceiling(d));
}
if (PageIndex == PageCount)
{
sb.Append(@"<div class=""nonbg"">下一页</div>");
}
else
{
sb.Append(string.Format(@"<div><a href=""/RNewsM.aspx?page={0}"">下一页</a></div>", PageIndex + ));
}
sb.Append(string.Format(@"<div><a href=""/RNewsM.aspx?page={0}"">尾页</a></div>", PageCount));
sb.Append(string.Format(@"<div class=""nonbg"">{0}/{1}</div>", PageIndex, PageCount));
return sb.ToString();
}
5.Session,cookie:请求信息(请求报文):Request;响应信息(响应报文):Response;请求报文+响应报文=上下文对象context。
//登录页面
Session["username"]=username; //登录进去的页面
if(Session["username"]==null)
{
Response.Redirect("Login.aspx");
}
session返回的key是存储在服务端浏览器的缓存里面的,所以一旦页面关闭之后,key就不存在了,session就取不到。放在session中的数据较安全,但是数据存储到服务端太多,响应会太慢。一般使用cookie加密。
//登录页面
Response.Cookies["username"].Value=username;
Response.Cookies["pwd"].Value=pwd;
Response.Redirect("xxx.aspx"); //登陆后的页面
if (Request.Cookies["username"] == null || Request.Cookies["pwd"] == null)
{
Response.Redirect("Login.aspx");
}
客户端向服务端发送请求,服务端返回cookie的值给客户端,默认情况下(没有设置过期时间的情况下),保存在浏览器的缓存里面。如果cookie设置一个过期时间,那么cookie就保存在客户端的硬盘上,直到过期时间达到或者手动的去删除cookie,它才会消失。
//设置登录信息过期时间
Response.Cookies["username"].Expires = DateTime.Now.AddHours();
后记:看懂代码,多练习。
ASP.NET动态网站制作(25)-- ADO.NET(4)的更多相关文章
- ASP.NET动态网站制作(3)--css(2)
前言:css分为四次课讲完,第一节课内容见ASP.NET动态网站制作(2)--css(1),接下来的内容会涉及到定位.浮动.盒子模型(第二次课).css的具体应用(第三次课).css3(第四次课).今 ...
- ASP.NET动态网站制作(24)-- ADO.NET(3)
前言:ADO.NET的第三节课.今天主要讲SQL Helper. 内容: 1.DataReader和DataSet的区别: (1)DataReader是一行一行地读,且只能向前读:DataSet是一次 ...
- ASP.NET动态网站制作(22)-- ADO.NET(1)
前言:这节课开始真正地学习WEB开发,ADO.NET就是一组允许.NET开发人员使用标准的.机构化的,甚至无连接的方式与数据交互的技术.所属的类库为:System.Data.dll. 内容: 1.AD ...
- ASP.NET动态网站制作(23)-- ADO.NET(2)
前言:这节课老师请高级班的E老师过来代课,还是接着老师讲的内容继续深入,修改了上节课老师写的部分代码. 内容: 1.数据库本质就是一个软件,这个软件帮助我们把数据有序地存储起来,当我们需要数据的时候帮 ...
- ASP.NET动态网站制作(26)-- Ajax
前言:这节课讲解关于Ajax的相关内容. 内容: 1.当点击页面中的一个按钮提交数据或请求数据的时候,整个页面的信息都会提交(不管信息是否是提交或者请求的数据,页面中所有的数据都提交),这样耗用的时间 ...
- ASP.NET动态网站制作(20)-- C#(3)
前言:C#的第三节课,继续上次课的内容,依旧围绕基础的只是讲解. 内容: 1.StringBuilder类:由于string类一旦创建,则不能更改.如果做字符串拼凑的话,将会非常耗费空间,如: str ...
- ASP.NET动态网站制作(1)--html
前言:正式上课的第一课,讲的是前端部分的最基础内容:html. 前端:html,css,js 数据库:sql server 动态部分:.net,c#... IIS(Internet Informati ...
- ASP.NET动态网站制作(0)
前言:一直想系统地学习一下网站建设的相关内容,看过相关的书籍,也跟着视频学过,但总觉得效率不高,学过的东西印象不深刻,或许还是自己动手实践的少.无意中免费听了一堂讲ASP.NET网站建设的课,觉得性价 ...
- ASP.NET动态网站制作(28)-- 三层框架(2)
前言:三层框架的第二节课,继续上次课的内容. 内容: 1.三层框架的使用目的:可以将视图层和业务逻辑层及实体层分开,可以提高代码的扩展性,安全性,可以实现程序的低耦合性. 2.GetModel方法及G ...
随机推荐
- python - ImportError: No module named pywintypes
must restart the python shell to avoid this issue after pywin32 installed
- Centos6.5搭建RHCS集群-实现GFS+iSCSI网络共享存储
RHCS集群配置 需要用到的各组件功能:RHCS(Red Hat Cluster Suite):能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合.LUCI:是一个基于web的集群 ...
- 'telnet' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
Win7或者win8等是默认没有安装telnet功能,所以你直接用telnet命令是用不了的: 下面介绍在win8下面如何操作:“控制面板”-->“程序”(在左下角)-->程序和功能--- ...
- Android Studio NDK 新手教程(5)--Java对象的传递与改动
概述 本文主要Java与C++之间的对象传递与取值.包括传递Java对象.返回Java对象.改动Java对象.以及性能对照. 通过JNIEnv完毕数据转换 Java对象是存在于JVM虚拟机中的,而C+ ...
- 【RabbitMQ 参考资料】
RabbitMQ从入门到精通:http://blog.csdn.net/column/details/rabbitmq.html RabbitMQ消息队列(一): Detailed Introduct ...
- 解决Spark集群无法停止
执行stop-all.sh时,出现报错:no org.apache.spark.deploy.master.Master to stop,no org.apache.spark.deploy.work ...
- python对象序列化或持久化的方法
http://blog.csdn.net/chen_lovelotus/article/details/7233293 一.Python对象持久化方法 目前为止,据我所知,在python中对象持久化有 ...
- C中的C文件与h文件辨析(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成 ...
- Maven 命令行创建项目时 Could not find goal ‘create’ in plugin org.apache.maven.plugins:...
使用maven3.3.9 版本,进行命令行创建项目时输入以下命令创建失败 mvn archetype:create -DgroupId=com.zang.maven -DartifactId=sys ...
- centos7 安装及破解 jira 7.3.3
JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 同样jira 的运行依赖java环境,上一节已经 ...