1、静态网页设计实用教程静态网页设计实用教程教学内容n学习情境一:搭建开发环境n学习情境二:系统对象与状态管理n学习情境三:站点导航控件与母版页n学习情境四:搭建系统框架n学习情境五:数据绑定与显示n学习情境六:数据录入与验证n学习情境七:数据更新于编辑n学习情境八:常用第三方工具与控件n学习情境九:用户控件与HTTPHANDLERn学习情境十:网站部署与定制学习情境一学习情境一搭建开发环境搭建开发环境课程地位PrevHTMLSQL BaseLogic JavaC#/WinFormsSTBProject1:ADO.Net+WinForms C/SADO.Net/Three TierJavaScri
2、ptSQL AdvanceJava OOPProject2: B/S.Net/OOPJSPAjax/Web ServiceJSP/Servlet/JavaBean/Web ServiceStruts/Hibernate/Spring/AjaxASP.NetNTCProject3: Net/Java HR/CRM/OA/B2C B/S行业手册行业手册就业技能结构图本门课程目标学完本门课程后,你能够:n熟练使用Visual Studio开发环境开发ASP.NET应用程序n完成常见的数据操作任务n运用ASP.NET开发商业站点课程项目展示n网上书店演示图书列表图书列表 数字水印数字水印 课程项目展示
3、RSS发布新书列表发布新书列表预习检查n创建 ASP.NET页面时,自动生成了哪几个文件?n使用ASP.NET做开发,是否一定要安装IIS?本章任务n初识ASP.NETq制作第一个ASP.NET页面q显示学员信息列表本章目标n掌握简单 ASP.NET 程序的开发步骤n掌握 ASP.NET控件+事件的开发方式n会使用Label、TextBox、Button等简单的控件B/S概念回顾nB/S 与 C/S 相比各有何优缺点?nB/S 的典型应用场景有哪些?ASP.NET的特色与优势4-1n与浏览器无关n方便设置断点,易于调试n编译后执行,运行效率高n丰富的控件库n代码后置,逻辑分明ASP.NET的特
4、色与优势4-2n编译后执行,运行效率高_代码代码编译编译 Microsoft 中间语言中间语言(MSIL 或或 IL) JIT 编译器编译器 机器语言机器语言分别编译分别编译 IL 的每一部分的每一部分ASP.NET的特色与优势4-3n丰富的控件库q内置80多种控件q统计表明,采用新控件方式的编码,至少比早期减少70%的代码量使用纯使用纯 JavaScript 脚本方式编写脚本方式编写树形目录需要大量编码树形目录需要大量编码而使用而使用TreeView导航控件,无需导航控件,无需编写一行代码即可完成编写一行代码即可完成ASP.NET的特色与优势4-4n代码后置,将业务逻辑代码与显示逻辑分开AS
5、PX 页面页面页面显示页面显示.aspx页面页面业务逻辑业务逻辑.cs文件文件程序员程序员页面设计人员页面设计人员成功案例5-1n因为 ASP.NET 具有诸多优势,越来越多的企业开始采用ASP.NET技术构建它们的网络应用系统。q戴尔电脑q当当书店q中华英才网q微软官方网站q. .ASP.NET成功案例5-2http:/ ASP.NET成功案例5-5http:/ 是基于 Windows系统的Web 服务器的qASP.NET应用程序的发布是基于IIS服务器的qIIS类似JSP中使用的Tomcat,提供了更为强大的功能视频:视频:IIS安装和配置视频安装和配置视频注意事项单击单击“添加添加/删除
6、删除Windows组件组件”确保确保“应用程序服务应用程序服务器器”处于选中状态处于选中状态开发服务器n在VS中,内置了轻量级的Web服务器qCassiniq无须配置IIS、设置相应权限Cassini运行时在状态栏的显示运行时在状态栏的显示可以查看开发服务器的可以查看开发服务器的状态信息状态信息第一个ASP.NET应用程序n时间提示页面q在Visual Studio中新建一个网站q设置站点位置q拖入相关控件q编写事件处理方法q查看运行效果 演示示例:演示示例:第一个第一个ASP.NET应用程序应用程序 项目位置设置n新建网站时,可选择项目的位置,有多种选择点击浏览可以更改点击浏览可以更改项目位
7、置项目位置可视化的设计双击双击Botton控件,到代码页,控件,到代码页,可以编写代码,与可以编写代码,与WinForms编程类似编程类似 点击点击“源源”可看到可看到HTML视图视图 与与WinForms一样简单的控件一样简单的控件+事件方式事件方式 基于控件+事件的编程protected void btnOK_Click(object sender, EventArgs e)string greeting;switch(DateTime.Now.Hour). .case 12: greeting = 嘿,嘿,0同学,吃中午饭了!同学,吃中午饭了!; break;. .string mess
8、age = string.Format(greeting, txtName.Text.Trim( );lblMessage.Text = message;Botton单击事件方法单击事件方法通过通过Text属性直接获取控件值,无须属性直接获取控件值,无须像像jsp中使用中使用Get、Post等方式等方式查看解决方案组成n这是我们刚才页面的解决方案组成存放数据的文件夹存放数据的文件夹自动创建的窗体文件自动创建的窗体文件代码后置文件代码后置文件站点配置文件站点配置文件ASP.NET中,中,HTML代码和代码和C#代码分别存储于不代码分别存储于不同的文件中,称作代码后置同的文件中,称作代码后置编码方
9、式nASP.NET有两种编码方式:代码内嵌和代码后置q代码内嵌,HTML代码和C#代码交叉使用。演示示例:演示示例:代码内嵌展示代码内嵌展示内嵌方式只内嵌方式只有有.aspx文件文件 体会ASP.NET的开发过程n显示学员信息q创建ShowStudents.aspx页面。q将学员信息表拖入页面q设置显示字段和标头q设置自动套用格式q添加分页功能,设置每页显示10条信息演示示例演示示例2:学员信息列表学员信息列表关键步骤:将表拖入页面n拖入表时,自动出现相关信息使用服务器资源管理器,打开学员信息数据库使用服务器资源管理器,打开学员信息数据库 将将Student表拖入页面的设计窗口内表拖入页面的设
10、计窗口内 关键步骤:设置字段和标题设置设置Columns,可,可编辑显示字段编辑显示字段HeaderText设置列标题设置列标题显示的内容显示的内容关键步骤:套用风格选择自动套用格式选择自动套用格式 多种格式可选多种格式可选 关键步骤:设置分页AllowPaging置为置为True打开分页功能打开分页功能PageSize属性设置每页的显示数目属性设置每页的显示数目小结n在后置代码中获取用户在TextBox中输入的内容,使用的是哪个属性?n什么是代码后置?n设置每页显示的条数,使用了哪个属性?总结nASP.NET的优势有哪些?n画图描述ASP.NET工作原理。n建立一个ASP.NET工程有哪些步
11、骤?nASP.NET代码开发有哪两种模式?学习情境二系统对象与状态管理回顾n什么是代码后置?nJSP中状态保持有哪几种方式?nJSP中Session的写法预习检查Session有什么用处?.aspx页面继承自哪个类?本章任务n实现用户登录功能n实现对用户浏览器的判断n实现页面数据的传递本章目标n掌握页面间的数据传递技术n能用Session对象记录用户登录状态等信息n能使用Server对象查看客户端浏览器类型n会使用Response 对象和Request对象控制页面的输入输出运行机制n回顾JSP的运行机制q客户端请求q后台处理(类Servlet)q返回客户端(HTML)nASP.NET的运行机制
12、是什么呢?ASP.NET运行机制.aspx文件文件第一次请求第一次请求解析解析后台编码类后台编码类生成生成生成的生成的页面类页面类编译编译第二次请求第二次请求第二个请求第二个请求实例化实例化响应响应ASP.NET引擎引擎页面类页面类实例化,处理实例化,处理和显示和显示现象:第一次获取网页较慢,第二次获取较快现象:第一次获取网页较慢,第二次获取较快 系统对象nJSP和ASP.NET中的常见系统对象对比。系统对象JSPASP.NETPage对象指向页面自身的方式。作用域为页面执行期。 Request对象读取客户端在Web请求期间发送的值Response 对象封装了页面执行期返回到HTTP客户端的输
13、出 Application对象作用于整个程序运行期的状态对象Session 对象会话期状态保持对象,用于跟踪单一用户的会话。 Cookie 对象客户端保持会话信息的一种方式Server 对象无,但其他对象提供了相应方法提供对服务器上的方法和属性的访问 注意:注意:JSP和和ASP.NET中对象的大小写不同中对象的大小写不同 Page对象 n每个.aspx文件对应一个Page对象n.aspx与后台代码类(局部类)合并生成页面类nPage对象是页面类的实例n所有的.aspx文件(Web窗体页)都继承自System.Web.UI.Page类 演示:新建页面演示:新建页面 查看源视图nPage指令指明
14、页面代码和后置代码所指明页面代码和后置代码所使用的脚本语言使用的脚本语言设置是否自动调用网页事件设置是否自动调用网页事件 ,默认为默认为true指定代码后置文件,该文件包指定代码后置文件,该文件包含此页面的局部类含此页面的局部类 代码后置的类,局部类代码后置的类,局部类 Page指令定义了指令定义了 ASP.NET 页用于编译和解析的属性。页用于编译和解析的属性。每个每个aspx页面只能有一个页面只能有一个Page指令指令页面输入输出控制nRequest对象q获得页面输入qURL传参qForm表单提交nResponse 对象q在页面输出要显示的内容q重定向Request对象n结合JSP,列举页
15、面间传递数据的几种方式?n如何获取传递过来的数据呢?Request对象对象ServerVariables 属性属性Form 属性属性Params 属性属性QueryString属性属性获取通过获取通过URL路径传来路径传来的数据的数据获取通过表单提交传输获取通过表单提交传输的数据的数据获取获取Web服务器变量服务器变量的集合的集合以上三种方式传输的内容都以上三种方式传输的内容都可以使用该属性获取可以使用该属性获取Response 对象nResponse 对象允许开发人员对当前页面的输出流进行操作Response.对象对象Redirect方法方法Write方法方法Response.Write(H
16、ello,ACCP);直接在页面上输出内容直接在页面上输出内容重定向到另外一个页面重定向到另外一个页面Response.Redirect(http:/);综合示例n获取并打印浏览器的信息q输出浏览器类型(IE/FireFox)q输出相关版本信息q输出客户端语言信息Request.ServerVariablesHTTP_USER_AGENT;/获取获取浏览器及版本浏览器及版本Request.ServerVariablesHTTP_ACCEPT_LANGUAGE;/获取获取浏览器语言浏览器语言演示示例演示示例5:获取并打印浏览器信息获取并打印浏览器信息 数据传递nJSP页面中,如何获取用户输入的信
17、息?q分两个页面进行处理,用户输入页面是一页,处理用户输入的又是另一个页面。q提交给同一页面,通过特殊参数判断是回传的数据q通过Get、Post方式或者URL传递需要发送服务器的数据页内数据传递回回发发ASP.NET Web页面页面 控件控件1控件控件1用户页面用户页面操作操作Page.IsPostBack属性属性回传回传首次加载首次加载truefalse如何判断回发和首次加载?如何判断回发和首次加载? 演示示例演示示例1:查询演示查询演示 关键代码:验证回传nIsPostBack常放置于Page_Load方法中q用于首次加载页面时的初始化 protected void Page_Load(o
18、bject sender, EventArgs e) if (Page.IsPostBack) . . 跨页数据传递ASP.NETWeb页面页面1ASP.NETWeb页面页面2控件控件1控件控件2 跨跨页页传传递递如何知道跨页发送如何知道跨页发送并获取传过来的数据?并获取传过来的数据? 跨页数据传递nIsCrossPagePostBack,指示跨页回发是否包含该页nPreviousPage,获取向当前页面传输数据的页面 PreviousPage 属性属性 页面页面2 FindControl 方法方法 找到页面找到页面1的对象的对象 根据控件名,获得控件对象根据控件名,获得控件对象 演示示例演示
19、示例2:跨页数据传递跨页数据传递关键代码n发出提交的页面n获取内容的页面if (Page.PreviousPage!=null)if(PreviousPage.IsCrossPagePostBack = true) this.lblShowURL.Text = 您的查询条件为:您的查询条件为: + (TextBox)this.PreviousPage.FindControl(txtKeyWord).Text;通过通过PostBackUrl指定获取页指定获取页 获取控件值获取控件值 判断该页面的是否为其他页回传判断该页面的是否为其他页回传 小结n绘图描述ASP.NET中页面的编译过程。n.asp
20、x文件都继承自哪个类?nASP.NET2.0中,.aspx的类与对应的代码后置的类是什么关系?nASP.NET中,页内数据传递使用哪个属性判断回传或者首次加载?状态管理nJSP中状态保持有哪几种方式?qsession、cookie等nASP.NET中状态保持ASP.NET状态保持状态保持SessionCookieApplication存储于服务器存储于服务器存储于客户端存储于客户端应用程序级别的状态保持应用程序级别的状态保持 SessionnSession用于什么场合?n结合JSP中学过的知识,我们知道qSession保持当前用户状态信息q常用于用户登录、购物车等Session示例n第三波网上
21、书店用户登录。q用户输入用户名和密码q检测用户名和密码是否输入合法q登录成功时,在Session中保存用户对象。演示示例演示示例3:第三波网上书店的登录第三波网上书店的登录 关键代码n登录代码n索引器q使用索引器 ,可以像数组一样处理Session对象User user = new User();user.Id = 0;user.UserName = txtloginId.Text;user.PassWord = txtLoginPwd.Text;SessionUser = user;Session的名称的名称 要存储的对象要存储的对象 JSP中中session.setAttribute(us
22、ername,username)Cookie演示nCookie方式记录用户最后登录时间q当用户登录时,记录用户的登录时间q用户下次登录时,显示用户上次登录时间演示示例演示示例4:增加增加Cookie的书店登录的书店登录 关键代码n写入Cookie代码n读取Cookie代码HttpCookie hcCookie = new HttpCookie(UserName, “张三张三);Response.Cookies.Add(hcCookie); string UserName=Request.CookiesUserName.Value;添加新的添加新的Cookie Application对象nApp
23、lication对象可以存储应用程序级的数据。q“Application”:应用程序q第一个用户访问站点时,应用程序启动,并创建一个Application对象。q创建成功后,整个应用程序中都可以使用该对象。q除非应用程序关闭,否则对象一直存储在内存中。Application对象对应对象对应HttpApplication类,它定义类,它定义 ASP.NET 应用程序中的所有应用程序对象通用的方法、属性和事件。应用程序中的所有应用程序对象通用的方法、属性和事件。小结n请分别书写Session方式和Cookie方式保存用户登录状态的代码。q保存当前用户登录时间q保存登录用户名q编写读取Cookie中
24、内容的代码Server 对象nServer对象是HttpServerUtility的一个实例,它提供对服务器上的方法和属性的访问。 Server对象对象HtmlEncode方法和方法和HtmlDecode方法方法Execute 方法和方法和 Transfer 方法方法UrlEncode方法和方法和UrlDecode方法方法MapPath方法方法取得文件的物理路径取得文件的物理路径执行另一个页面的脚本执行另一个页面的脚本将文本编码成可以在浏览器中将文本编码成可以在浏览器中可正确浏览的格式可正确浏览的格式URL编码和解码,类似与编码和解码,类似与JSP中的中的URLEncoder.encode 综
25、合示例n修改欢迎页q当用户未登录时转到登录页面q登录成功后转回欢迎页q在欢迎页面显示用户的信息q根据用户浏览器的语言,给予不同语言的欢迎辞(如:中文用“您好, !”,其他用“HELLO, .!”。)演示示例演示示例6:新的欢迎页面新的欢迎页面 总结n如果要显示在线人数,想想怎么做?q提示:在每次用户请求时记录人数,保存在什么位置比较合适?n简述ASP.NET中状态保持的三种方式,并说明适用范围?学习情境四搭建系统框架回顾2-1n三层结构都有哪三层?n上一章里我们学习了哪三种导航控件?回顾2-2string sql = SELECT SubjectName FROM Subject;SqlCom
26、mand command = new SqlCommand(sql, DBHelper.connection);DBHelper.connection.Open();SqlDataReader dataReader = command.ExecuteReader();while (dataReader.Read( ) cboSubject.Items.Add(dataReaderSubjectName.ToString();未关闭未关闭 ReaderdataReader.Close();未关闭连接未关闭连接 DBHelper.connection.Close(); DBHelper.conne
27、ction.Dispose(); 预习检查模型层有哪些内容?数据访问层一般写哪些方法?本章任务n搭建网上书店的架构n实现书店的用户登录本章目标n会在 ASP.NET 中使用三层结构。n能够实现三层结构下的用户注册和登录。系统架构n三层结构q表示层q业务逻辑层q数据访问层分层的理念:将相似的内容放到一起去处理,开发人员可以只关分层的理念:将相似的内容放到一起去处理,开发人员可以只关注整个结构中的其中某一层,可以很容易的用新的实现来替换原注整个结构中的其中某一层,可以很容易的用新的实现来替换原有层次的实现有层次的实现 三层结构的经典案例:三层结构的经典案例:PetShopPetShop4.0n宠物
28、商店q微软展示.NET企业开发的范例。q与Sun的PetStore的商业竞争。q一个小型的电子商务案例。q体现了微软推广的开发思想和设计理念。q分22个项目,经典的系统,从设计的思想到最好的编码,学习参考价值很高。演示:演示:PetShop4.0 PetShop4.0架构简介ASP.NET WebBLLDALFactoryOracleDALSQLServerDALIDALModel表示层表示层业务层业务层数据层数据层典型的三层结构典型的三层结构搭建第三波网络书店的模型层n模型层q表示层需要访问实体对象的属性值。q业务层需要通过实体对象处理业务逻辑。q数据层也需要通过实体对象读写数据库。q模型是
29、数据载体。n命名q项目名:MyBookShopModelsq命名空间:MyBookShop.Modelsq类名:图书表Books图书类Bookq实体类通常冠以Serializable特性,以保证实体传输的可靠性外键的处理n数据库中有主外键关系,模型层怎么表示?q比如用户表和状态表。q状态字段是用户表的外键。n两种方式:q为实体类添加状态id属性,存储状态id。q为实体类添加状态属性,存储状态对象。示例n用户类的模型q用户需要有登录名、密码、状态等属性q状态表存储状态名称q用户的状态属性使用状态对象public UserState UserStateget return this.userSta
30、te; set this.userState = value; 处理外键的代码Serializable()public class User/字段字段public User() /构造函数构造函数/常见属性常见属性public UserState UserState/用户状态用户状态-外键外键get return this.userState; set this.userState = value; 小结n编写实体类UserRole并更新User类相关属性q类关系图如下答案:答案:UserRole类类 数据访问层n数据访问层q所有与数据库交互的操作q数据表的增、删、查、改操作q数据访问层不做逻
31、辑判断n命名q项目名:MyBookShopDALq命名空间:MyBookShop.DALq类名:图书表Books图书数据访问类BookService代码比较n比较两段代码 代码1 代码2 n在每一个对象的数据库访问类中:q数据库连接反复出现q数据库连接打开和关闭反复出现q执行Sql语句的方法相似q返回记录集的方法相似根据面向对象思想,是否根据面向对象思想,是否可以减少这些重复劳动?可以减少这些重复劳动?DBHelper类n我们将常用方法提取出来,作为DBHelper类n该类包含了:建立数据库连接建立数据库连接执行执行Sql的方法的方法(存储过程(存储过程sql语句)语句)返回记录集返回记录集返
32、回返回Reader返回结果返回结果创建数据访问层的类n创建UserService类qCreate方法qRetrieve方法qUpdate方法qDelete方法bool AddUser(User user)IList GetAllUsers( ) User GetUserById(int id)IList GetUsersBySql(string sql)bool DeleteUserById(int id)bool UpdateUser(User user)增加一个用户的方法public static bool AddUser(User user) string sql = INSERT US
33、ERS (loginid, loginpwd, name, address, phone, mail, userroleId,UserStateId) + VALUES (LoginId,LoginPwd,Name,Address,Phone,Mail, RoleId,UserStateId); SqlParameter para = new SqlParameter new SqlParameter(LoginId,user.LoginId), ; DBHelper.ExecuteCommand(sql, para); return true;组合组合SQL语句语句参数赋值参数赋值调用调用D
34、BHelper类中类中的方法进行处理的方法进行处理小结n模型层为什么要标记为可序列化?n模型层的作用?n数据访问层的功能?n编写User的数据访问类的查、改、删方法。示例:示例:User的数据库访问类的数据库访问类 业务逻辑层n业务逻辑层q是表示层与数据访问层的桥梁,q负责逻辑的判断,业务处理、数据传递。q不在表示层访问数据库,数据更加安全。n命名q项目名:MyBookShopBLLq命名空间:MyBookShop.BLLq类名:图书表Books图书业务逻辑层类BookManager用户登录的业务逻辑方法public static bool Login(string loginId, stri
35、ng loginPwd, out User validUser)User user = UserService.GetUserByLoginId(loginId);if (user = null) validUser = null; return false;if (user.LoginPwd = loginPwd) validUser = user; return true;else validUser = null; /密码错误密码错误 return false;表示层n表示层的设计给客户最直接的体验。q页面风格和布局,美观大方。q页面操作符合逻辑,讲究用户体验 。q注意风格统一。表示层负
36、责内容的展现和与用户的交互。表示层负责内容的展现和与用户的交互。可以进行变量范围的验证。可以进行变量范围的验证。不做业务逻辑判断。不做业务逻辑判断。不做与数据库交互的处理。不做与数据库交互的处理。用户管理模块n首先根据数据库创建模型层。q包括用户的实体类以及相关联的类。n创建数据访问层用户管理类。q包括增删查改方法。n设计相关页面,并编写事件代码。q新用户注册。q用户登录。q用户信息修改。n创建业务逻辑层处理类。q根据需要,添加相关方法。示例1n用户登录q创建页面。q编写事件处理代码,包括验证输入。q创建业务逻辑层方法,调用数据访问层相关方法处理。演示示例:演示示例:用户登录用户登录 用户注册
37、的确认事件代码User user = new User();user.LoginId = this.txtLoginId.Text;user.UserState = new UserState();user.UserState.Id = 1;if (UserManager.AddUser(user)this.ltMain.Text = alert(注册成功!请继续购物注册成功!请继续购物 ); window.location=./default.aspx;elsethis.ltMain.Text = alert(用户名已使用!请重新选择!用户名已使用!请重新选择!);实例化实例化User类类对
38、类相关属性进行赋值对类相关属性进行赋值默认值,硬编码默认值,硬编码业务层进行相关判断和处理业务层进行相关判断和处理弹出脚本提示弹出脚本提示小技巧:在控件上输出脚本小技巧:在控件上输出脚本小结n编写图书模块相关实体类和数据层、业务层的类。q图书有id、作者、标题、分类、出版社、描述、ISBN(简化)。q出版社有id、名称。q分类有id、名称。q编写图书、出版社、分类的实体类。q编写图书的数据层增删查改方法。q编写图书业务层的查询所有的方法。演示示例:演示示例:图书模块相关类图书模块相关类 总结n数据访问层常见的方法有哪几种?n页面要显示一个表的内容,可否直接使用ADO.NET连接数据库,为什么?
39、n业务逻辑层的方法来自哪部分的需求?学习情境五数据绑定与显示回顾2-1nTreeView控件绑定数据的方式是什么?q指定DataSourceID n数据访问层有哪四类常见方法?qC、R、U、Dn在ASP.NET中调用客户端脚本,有哪几种方法?q注册客户端脚本q页面输出脚本q控件的Text中输出脚本n下面是注册用户的部分代码,检查有什么问题。回顾2-2User user = new User( );user.LoginId = this.txtLoginId.Text;user.LoginPwd = this.txtLoginPwd.Text;if (UserManager.LoginIdExi
40、sts(user.LoginId) this.Page.ClientScript.RegisterStartupScript(this.GetType( ), , alert(用户名或者密码错误!用户名或者密码错误!););UserManager.AddUser(user);此处应该使用单引号此处应该使用单引号预习检查GridView控件有哪两种数据绑定方式?有哪几种数据源控件?本章任务n完成书籍分类维护模块q图书列表分页q可多选,实现多个图书分类的调整q高亮显示鼠标所在行(光棒效果)q图书详细显示页面本章目标n能熟练使用GridView进行数据的查询与展示n熟练使用ObjectDataSou
41、rce控件绑定业务逻辑层返回的对象数据展示n数据展示的两种实现方法使用数据源控件,可以实现快速开发使用数据源控件,可以实现快速开发手写手写代码实现代码实现简单简单设置实现设置实现ADO.NET数据数据源控件源控件Web服务器服务器数据库数据库展示数据展示数据什么是数据源控件?什么是数据源控件?数据源控件n快速实现多种常用的数据源进行展示和交互n快速完成对数据表增删改查操作n是ASP.NET2.0引入的一个新的数据抽象层学习过的学习过的数据源控件数据源控件“面包屑面包屑”导航控件使用的导航控件使用的SiteMapDataSourceTreeView导航控件使用的导航控件使用的XmlDataSou
42、rce数据源控件nVS2005内置的五种数据源控件qSqlDataSourceqAccessDataSourceqObjectDataSourceqXmlDataSourceqSiteMapDataSourceSqlDataSource允许访问支持允许访问支持ADO.NET数据提供程序的所有数据提供程序的所有数据源。可访问数据源。可访问ODBC、SQL Server等等ObjectDataSource可以可以对业务对象或其他返回数据对业务对象或其他返回数据的类执行特定的数据访问的类执行特定的数据访问XmlDataSource可以对可以对XML文档执行特定访问,文档执行特定访问,包括物理访问和内
43、存访问。包括物理访问和内存访问。SiteMapDataSource可以对站点地图可以对站点地图提供程序所存储的提供程序所存储的Web站点执行站点执行特定的站点地图数据访问特定的站点地图数据访问数据源控件n数据源控件类的层次结构图:Control类类普通数据源控件普通数据源控件层次化数据源控件层次化数据源控件ObjectDataSourceSqlDataSourceSiteMapDataSourceXMLDataSourceAccessDataSource所有数据源控件都派生于所有数据源控件都派生于Control类类ObjectDataSource重要属性属性名称属性名称说明说明SelectMe
44、thod获取或设置由检索数据的方法或函数的名称。 InsertMethod获取或设置插入数据的方法或函数的名称。UpdateMethod获取或设置由更新数据的方法或函数的名称。DeleteMethod获取或设置删除数据的方法或函数的名称。TypeName获取或设置 ObjectDataSource 对象表示的类的名称,即业务对象的类名。手写代码方式this.gvMain.DataSource = UserManager.GetAllUsers( );this.gvMain.DataBind( );获取数据的方法获取数据的方法展示数据的控件展示数据的控件指定数据集合指定数据集合数据绑定方法数据绑
45、定方法n注意:q数据源控件方式只要指定数据源id即可;qDataSource方式在指定完数据源后必须使用绑定方法。数据绑定控件n数据绑定控件可以用来展示和绑定数据q数据源控件不提供展示,数据绑定控件提供展示q数据绑定控件可以通过数据源控件绑定数据n数据绑定控件的层次结构小结n三层结构下,采用哪个数据源控件比较合适?n说明五种数据源控件各自的作用。图书分类管理n第三波网络书店的图书分类管理图书列表显示,显示标题和分类图书列表显示,显示标题和分类分页分页详情详情多选效果多选效果光棒效果光棒效果分类修改功能分类修改功能数据展示 nJSP中如何显示列表信息?q读取数据q循环记录集,组合HTML代码(使
46、用标签库或者硬编码)n.NET中的数据绑定控件q能够将控件绑定到一个数据结果集 q能够使用模板自定义控件的布局和样式 q提供用于处理和取消事件的方便模型 GridView控件n使用GridView显示图书信息列表1、将GridView控件拖入页面。2、添加并指定ObjectDataSource数据源。3、编辑列,选择需要显示的字段,并可设置表头等。4、设置分页。5、运行,查看效果。演示示例:演示示例: 图书列表图书列表 绑定列nBoundField字段q表示数据绑定控件中作为文本显示的字段。q可设置表头、样式等信息。q DataFormatString,可设置显示字段的格式。注:注: 当当Ht
47、mlCode属性设置为属性设置为false, DataFormatString才有效才有效 0:C0代表对应后面的第一个参数,这里就是绑定的字段所对应的值;代表对应后面的第一个参数,这里就是绑定的字段所对应的值; C是格式化标记,它可以将数字型的字段格式化为货币类型。是格式化标记,它可以将数字型的字段格式化为货币类型。绑定列nTemplateField字段q绑定中显示自定义内容的字段q有五种模板(标头、脚注、普通项、交替项、编辑模式) asp:TextBox ID=TextBox1 runat=server Text= asp:Label ID=Label1 runat=server Text
48、= 绑定字段的方法,还可以使用绑定字段的方法,还可以使用Eval注意单引号的使用注意单引号的使用Eval和BindnEval 方法是只读方法q该方法采用数据字段的值作为参数并将其作为字符串返回。q当对表达式操作时候,必须用Eval 如q格式化nBind 方法支持读/写功能q可以检索数据绑定控件的值并将任何更改提交回数据库。d:日期;:日期;m:月份;:月份;y:年份。可能格式化为:年份。可能格式化为“17/05/2008”。 绑定列nButtonField字段q显示为数据绑定控件中的按钮 qCommandName设置自定义命令(RowCommand)protected void gvBooks
49、_RowCommand()if (e.CommandName = Select) int index = Convert.ToInt32(e.CommandArgument); GridViewRow selectedRow = gvUser.Rowsindex; TableCell contactName = selectedRow.Cells1; 绑定列nCommandFieldq一个特殊字段,显示了用于在数据绑定控件中执行选择、编辑、插入或删除操作的命令按钮 q自动生成命令,无须手写q对应数据源的增改查删方法nHyperLinkFieldq显示为超链接的字段q比如链接到详细页面 设置链接
50、的路径格式设置链接的路径格式设定绑定的参数集合设定绑定的参数集合绑定列nImageField字段q为图像的字段q绑定到包含图像 URL 的数据源中的字段q指定DataImageUrlFieldnCheckBoxField字段q以复选框显示的布尔型字段 q仅当数据源字段中有布尔型字段时使用此字段光棒效果protected void gvDemo_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType = DataControlRowType.DataRow) e.Row.Attributes.Add(onmous