WEB服务器.ppt
4.IIS 简介,WEB 服务器也称为 WWW 服务器,它是一个软件,主要是提供网上信息浏览服务 建一个网站,需要安装和配置 WEB 服务器,如果想让网站成为 Internet 的一个站点,则还需要一个独立的 IP 地址 IIS(Internet Information Server):微软的WEB服务器 在本机调试“网络”程序,需要安装 IIS,安装 IIS,服务器版的 Windows 操作系统中,它是一个可选的安装组件,在一些非服务器版的Windows 操作系统中也含有 IIS 安装 Visual Studio.NET 前必须在你的机器上先安装 IIS IIS 安装过程中自动配置 WEB 服务器,一般不要更改系统默认的配置,以免影响 ASP.NET 的运行。,应了解的 IIS 知识,网站默认工作目录:C:INTERPUBWWWROOT 浏览器访问 http:/localhost 既访问此路径开发网站时网页文件通常都放在这个目录里我们建立的 ASP.NET 应用程序默认情况下也都放在这个文件夹里。实际开发时经常放在别处,但是要进行设置。,Internet 信息服务,控制面板/管理工具/Internet 信息服务,可以打开 IIS 的管理工具,对 IIS 进行管理、配置有时我们希望将应用程序放在别的目录下,为了能找到相应路径,需要建立虚拟目录 在 IIS 管理工具中右键单击“默认web站点”,新建/虚拟目录,根据向导选择相应目录即可此时浏览器访问 http:/locaohost/虚拟目录名/文件名 既可访问此站点。,5.一个简单的 ASP.NET 程序演示,创建一个 ASP.NET Web 应用程序 注意应用程序默认的创建位置:http:/localhost/WebApplication1 可以修改项目名称 WebApplication1 如果创建到其他目录下,需要设置虚拟目录项目创建后,出现一个空白 web 窗体,同时在“解决方案管理器”中,有一个Default.aspx 文件,注意窗体下方的“设计”与“源”标签,切换一下看看效果,一个简单的 ASP.NET 程序演示,在“解决方案管理器”中点图标“显示所有文件”,可以看到更多的文件在编写 web 程序时,IDE 生成了下列文件:Default.aspx:HTML文件 Default.aspx.cs、Default.aspx.designer.cs:程序源代码文件。打开文件看看.NET 编译程序只编译程序源代码文件,一个简单的 ASP.NET 程序演示,摆放一个文本框,一个标签,一个按钮添加按钮单击事件处理函数,在事件处理函数内加一行代码:TextBox1.Text=“HELLO!”;编译,运行 在运行的网页上查看原代码,和初始的HTML 文件比较一下,代码分析 HTML 代码,Default.aspxRow 1:处理该文件所需信息,其中几个关键:language:C#Codebehind:对应的后置文件AutoEventWireup=“false”:由IDE自动生成事件代理Inherits:继承后置文件的类,代码分析HTML 代码,Row 3:文档类型说明Row 5-最后:都是常见的标准 HTML 标记但是对于我们添加到页面的控件,其标记都是 的形式。该标记表明使用的是 ASP 控件其实我们仍然可以在页面中使用标准的 HTML 页面元素。试一下:在工具箱中展开 HTML 项,拖一个文本框到页面中,再看看代码的变化。,代码分析HTML 代码,另外你会发现,ASP 控件中都有一句 runat=“server”,表明这些控件是在服务器端执行的。实际上,每一个 ASP.NET 控件都对应一个 HTML 元素(控件),具体对应什么类型的控件取决于浏览器和 web 控件参数的设置当服务器返回页面到客户端时,发送回来的都是 HTML 元素。,代码分析后置代码,名字空间System.Web:管理客户请求和服务器响应的类System.Web.UI:创建 web 应用和控件的所需的类System.Web.UI.WebControls:web 控件System.Web.UI.HtmlControls:HTML控件,代码分析后置代码,执行过程首先发生 init 事件,调用 OnInit 方法OnInit 方法调用 InitializeComponent 方法对组件进行初始化然后发生 Load 事件,调用 Page_Load 方法,可在该方法中添加代码,处理装入 Form 时执行的操作注意:每次加载此页都会执行该代码,如果想只在第一次加载时执行代码,需要添加控制代码(后面介绍),ASP.NET 应用程序和网站的区别,新建一个网站项目的时候,有两个选择:新建网站和新建 A Web应用程序。它们都可以用来开发 Web 应用,但是开发时及今后的维护方面有一些差异。简单看,小型应用用网站方式比较简单,大型项目用 Web 应用程序较好。新建网站:完成后可直接发布,发布时生成的DLL文件名是随机的,不与原文件直接对应。使用增量编译模式,文件被修改后,只有这部分才会被增量编译进去。,ASP.NET 应用程序和网站的区别,Web应用程序:有重新生成和发布两项 可在其中添加多个项目,便于团队合作开发模式和 Windows 应用程序类似发布前需要编译后台代码有任何修改,都要重新进行编译,维护较麻烦。,6.Web 控件与 HTML 控件,Web控件是 System.Web.UI.WebControls 名称空间中定义的服务器控件,它们通常在标签中添加例如:HTML控件在 System.Web.UI.HtmlControls名称空间中,它们在常规的 HTML 标签中添加。例如:HTML 控件默认是客户端运行。如果为它也加一句 runat=“server”会怎样?可以看看自动生成的代码是否有变化?,Web 与 HTML 控件的差异,HTML 控件:不具备任何抽象能力。每种控件与 HTML 标记都是一一对应的。Web控件:运行在Web服务器上,允许通过编程控制这些网页元素,故它的目标模型不受 HTML 语法的限制。Web 控件创建了更高级别的抽象,可以没有任何对应的 HTML 标记(如 Calendar 和 DataGrid 控件)。Web 控件还能够在适当的场合起到合并功能的作用(例如用一个 TextBox 控件来代替多个HTML标记),(1)抽象能力,(2)对目标浏览器的适应能力,HTML 控件不会自动检测请求页面的浏览器的能力,也不会修改它们提供的 HTML。在使用这组控件时,你要负责确保页面能同时在高级和低级浏览器上工作。Web 控件能够自动对它们生成的结果进行调整,以确保输出结果在高级浏览器和低级浏览器上的工作同样出色。Web 控件还能够针对不同的浏览器提供不同的行为,从而充分发挥浏览器的潜力。,(3)程序员对生成的 HTML 的控制能力,HTML 控件允许您完全控制所显示的内容以及发送到客户机浏览器的内容。Web 控件提供了更为丰富的对象模型,以及适应多种浏览器的能力。因而,它们没有提供对输出结果的相同程度的控制能力。,在开发 Web 应用程序时,可以根据这两组控件的能力以及您的需求来从中进行选择。还可以选择在同一页上混合使用这两组控件一般来说,Web控件功能更强大,而HTML控件效率更好。同时提供具有一些重复功能的 HTML 控件和 Web 控件是有必要的,它给了程序员更多的选择余地。在初学阶段,我们对 HTML 又不太熟,尽量用 Web 控件,因为它与 WINDOWS 窗体编程的感觉更一致一些。,7、ASP.NET 编程的一些重要问题,网络协议:可分为面向连接的和非连接的面向连接的网络(如电话)是点到点通信最理想的方式优点:建立连接后,可以保持带宽,而且安全性好。缺点是它的复杂性,成本高昂。非面向连接的网络(如信件)的代表是因特网因特网是构建在 TCP/IP 协议上的,而 HTTP是基于 TCP/IP 的应用层协议,是非连接的。优点:成本低廉,其规模的可扩展性。缺点:不能保证信息安全送达,7.1 保持页面状态,HTTP 协议的固有特性,给B/S(浏览器/服务器)结构的 WEB 编程带来很大麻烦页面无法保持自已的状态。既每当同一个页面往返一次服务器(比如刷新页面、提交表单、激发事件),服务器不记得同一页面的状态变化。当你输入信息并“提交”,输入信息通过表单的 GET 或 POST 方式传到服务器。当提交完返回这个页面时,输入的信息看不到了,因为同一个页面往返了一次服务器,服务器不记得同一页面的两次状态变化。,解决的办法,过去通过写 Script 代码去维持页面状态变化,利用 Cookies,ASP 的 Session 对象等也可以实现,但很麻烦。如果一个页面有数十个状态要保持,工作量很大。ASP.NET 用简单的方法解决了这个问题,但效率倍受质疑。,WiewState 对象,是 ASP.NET 中用来保存 WEB 控件回传时状态值的一种机制。在 WEB 窗体的设置为 runat=“server”时,这个窗体会被附加一个隐藏的属性 _VIEWSTATE在浏览器上看到的表单隐藏域 hidden 就是WEB 窗体在客户端 HTML 的映射。_VIEWSTATE中存放了控件在 ViewState 中的状态值。,ViewState 是类 Control 中的一个域,其他控件通过继承Control来获得 ViewState 功能。它的类型是 system.Web.UI.StateBag,一个名称/值的对象集合。当请求某个页面时,ASP.NET 把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,ASP.NET 分析回传的窗体属性,并赋给控件对应的值。,使用 ViewState 的条件,这些条件都是系统默认的:要使用 ViewState,在 ASPX 的 HTML视图中必须有一个服务器端窗体标记。Page 的 EnableViewState 属性值为true控件的 EnableViewState 属性值为 true,应注意的问题,使用 WiewState 保持页面状态不需你写代码。但是 WiewState 使用不当会造成严重的性能问题在复杂的页面里,尤其是涉及到数据库访问时,WiewState 隐藏域 hidden 的数据可能会有几十K甚至上百K,这么大的数据量往返传递,肯定会造成性能问题。对不需要保持状态的控件,应将 EnableViewState 属性值设为 false。,7.2 页面的 post 与 get 提交方式,有post 与 get 两种方式将客户端提交到服务器理论上说,GET 是从服务器上请求数据,POST 是发送数据到服务器。GET 方法是把数据参数队列加到一个URL上,值和表单是一一对应的,但有大小限制。因为这一队列在 URL 里,这样参数就能看到,可以被记录下来或更改。POST 方法可以传递大量数据到服务器,用户在浏览器端看不到这一过程。,应注意的问题,区别:Post 允许传输大量数据,而 Get 传送的数据量会受到限制,但效率却比 Post 方法好。建议:1、get 方式的安全性较 Post 方式差,包含机密信息的话,建议用 Post 数据提交方式;2、做数据查询时,可用 Get 方式;而做数据添加、修改或删除时,建议用 Post 方式;Form 默认的提交方式为 GET,通过属性 method=“post”可以进行修改。,7.3 页面跳转,WEB 页面最大特点是有超连接,可以从一个网页转到另一个网页。ASP.NET 实现超连接的方法很多。常用的有三种:1、使用 HyperLink 控件2、使用按钮的 PostBackUrl 属性3、使用 Response 对象的 Redirect 方法。,HyperLink 控件,超链接,最简单的跳转方式只要将其 NavigateUrl 属性设为目标页面即可。例如:NavigateUrl=/WebForm1.aspx缺点:目标页面无法获取源页面的数据,使用按钮 PostBackUrl 属性,当为一个按钮设置 PostBackUrl 属性,将其指向目标页面,点击按钮时就会跳转该方法目标页面通过 Page.PreviousPage对象,可以获得源页面控件目标页面通过 PreviousPage 属性获取数据时,需要在页面(源)添加代码:,Redirect 方法,Response 对象的 Redirect 方法也是常用的简单定向手段。当 Web 服务器接到一个重定向请求后,会将一个响应头送给客户端,这将导致客户端发送一个新的请求到服务器。换句话说,一个重定向请求实际上是两个请求响应:一个是最初的请求响应,另一个是新的重定向请求响应。,Redirect 方法,要注意的是该方法是一个 GET 请求,这就意味着我们不能从源页面中通过重定向命令提交数据。但是我们可以在重定向中使用查询字符串来传递数据。例如下面代码:Response.Redirect(menu.aspx?userName=+UserName.Text);补充例题:WebTest,演示页面跳转及传参,7.4 几个重要的内置对象,从初始的 ASP 开始,就内置了一些对象,主要有:Response、Request、Session、Application、WiewState 等这些对象在 ASP.NET 中都保留下来了,这些对象都是内置对象,不需实例化(new操作符)就可以使用。书中 P300 表 13-4 给出了这些对象的简单说明。,7.4.1 Response 对象,用于向客户端发送信息,常用方法有:1)Response.Write方法:用于将字符、字符串、字符数组写入 HTTP 输出内容流。例如:Response.Write(this is a test.);2)Response.WriteFile方法:用于将指定的文件写入HTTP输出内容流。例如:Response.WriteFile(test.txt);3)Response.Redirect方法:用于将客户端重定向到新的URL。例如:Response.Redirect(test.aspx);,7.4.2 Request 对象,获取请求页面的 HttpRequest 对象。该对象使 服务器能获取客户端在 Web 请求期间发送的 HTTP 信息。例如:Request.Browser.Platform:客户端使用的操作系统 Request.Browser.Type:客户端使用的浏览器类型 Request.UserHostAddress:客户端IP地址,7.4.3 Application 对象,是一个应用程序级的对象,它包含的数据可以在整个 Web 站点中被所有用户使用,在网站运行期间持久地保存数据。可以利用 Application 对象可以定义类似于所有用户公用的全局变量。对Application 对象进行操作时,需要先进行锁定,操作完成后再解除锁定。例如:Application.Lock();Applicationcounter=(int)Applicationcounter+1;Application.UnLock();,7.4.4 Session 对象,用来区分不同的浏览器客户。当不同的浏览器访问服务器时,服务器会分别为其分配一段内存空间用于保存不同用户的数据信息,即每一个客户都有自己的 Session。定义与使用Session的方法:Sessiononline=true;Sessioncounter=(int)Sessioncounter+1;,7.5 Page 事件处理函数,Page 类相当于WINDOWS窗体的Form类,是WEB页面的基类,它的主要事件有:Page_Init:页面初始化引发的事件 Page_Load:加载页面时引发的事件Page_UnLoad:页面从内存中卸载时引发Page_Init 和 Page_Load 事件区别在于:只有后者才能完全加载控件,绑定数据。,Page_Load 事件,每当建立一个 ASP.NET WEB 程序,IDE 都会自动写一个 Page_Load 事件处理函数:protected void Page_Load(object sender,System.EventArgs e)把每次加载页面时都需要执行的一些网页的初始化代码放在这里是最合适的。如一些控件的数据绑定。但是,每次当页面被发送回服务器,Page 就会被重新加载,启动 Page_Load 事件,执行Page_Load 事件处理程序中的所有代码。,如果希望只在网页第一次加载时执行一些代码,我们可以利用 Page 类的 IsPostBack 属性来完成这一功能。在网页第一次加载时,该属性的值是 false。如果网页因回送而被重新加载,IsPostBack属性的值为 true。可在 Page_Load 用以下初始化页面的代码:if(!Page.IsPostBack).,7.6 控件的事件,WEB 控件的属性窗口有闪电(事件)图标,可以在此给 WEB 控件建一个事件处理函数。但是 HTML 控件的属性窗口没有闪电(事件)图标,把它设为服务器执行,则双击控件,可建一个 onclick 事件处理函数,可在此方法中写 javascript。此时实际是在客户端执行的。,每当点击 ASP.NET 网页上的的 Web 控件时,窗体就会被发送到服务器上。如果控件的 AutoPostBack 属性被设置为true,那么当该控件的状态被改变后,也会使表单发送回服务器。如果这个属性被设置成 false,那么点击后不会立刻将变化传给服务器处理。编写 WEB 应用程序应注意:查询数据库返回的结果集应尽可能小;WiewState 要尽可能少;尽量减少往返服务器的次数,尽量不用事件,7.7 Web.config 文件,是一个XML文本文件,用来储存 ASP.NET Web 应用程序的配置信息。例如常用来设置 ASP.NET Web 应用程序的身份验证方式。当你新建一个 Web 应用程序后,默认情况下会在根目录自动创建一个默认的 Web.config文件,包括默认的配置。,Web.config 文件,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,可以在该子目录下新建一个 Web.config 文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。,8.常用 Web 服务器控件,Web 服务器控件在使用上和 Windows 窗体控件很相似,但是由于网络支持的限制,一般属性及事件要少一些。要注意 Web 服务器控件的属性、方法、事件全都是在服务器端执行的。用户通过客户端浏览器操作Web页面时,对Web 控件的每个请求都要发送到服务器端,服务器处理后,再将处理结果转换为客户端脚本发送到客户端显示。,8.1 简单控件,Button 类控件有三种类型的按钮控件:Button 控件:与Windows窗体的Button控件用法相同。LinkButton 控件:外观与Hyperlink控件相同,但在功能上与 Button 控件完全相同。ImageButton 控件:以图片形式显示的按钮。单击时都可以将窗体提交给服务器,并触发服务器端对应的 Click 事件。,TextBox控件,1.常用的基本属性 1)AutoPostBack 属性:控件中文本修改后,是否自动回发到服务器。该属性默认值为 false。2)TextMode 属性:用于设置文本框接受文本的行为模式。共有三种属性值:MultiLine(多行输入模式);Password(密码输入模式);SingleLine(单行输入模式、默认)。2.常用的事件 TextChanged 事件:文本框的内容发生更改导致窗体回发服务器时触发。注意,是否触发该事件与AutoPostBack 属性有关,少用,客户端来处理!,CheckBox 与 CheckBoxList 控件,CheckBox 与 CheckBoxList 控件都是用于向用户提供选项和选项列表。CheckBox:一个可选项CheckBoxList:一组可选项当选项比较多时,或者在运行时动态的决定有哪些选项时,使用 CheckBoxList 控件比较方便。,1.CheckBox 控件的常用基本属性 AutoPostBack 属性:状态更改后是否自动回发到服务器处理。该属性默认值为 false。2.CheckBoxList 控件的常用基本属性 1)Items 属性:表示控件对象中所有项的集合。2)RepeatColumns 属性:控件中显示 CheckBox项的列数。3)RepeatDirection 属性:决定控件中各项的显示排列方式。默认值是Vertical。3.CheckBoxList 控件的常用基本事件 CheckedIndexChanged 事件:更改CheckBoxList控件中的选项,回发服务器时触发。,RadioButton 与 RadioButtonList 控件,注意与 Windows 控件 RadioButton 的区别:在Windows窗体中,在同一容器中的所有RadioButton 控件都默认为同一组,只能在这些控件中进行单选;Web窗体中,默认情况下会将同一容器中的所有 RadioButton 服务器控件作为不同组,可以多选。如果希望将其作为一组,需要设置 RadioButton 的 GroupName 属性。,RadioButtonList 服务器控件是封装了一组单选按钮控件的列表控件。其主要的属性、事件与 CheckBoxList 服务器控件相同。,ListBox 和 DropDownList 控件,ListBox 为列表框控件,而 DropDownList 是下拉列表控件,类似于 Windows 窗体中的 ComboBox。它们主要的属性都有 Items、AutoPostBack 属性。而 ListBox 有 SelectionMode属性,用于指定控件的选择模式,当属性值设置为Multiple 时,可以选择多个。常用事件为 SelectedIndexChanged 事件。,例14-1:Web窗体简单控件综合示例。,8.2 Table控件,Table 控件往往用来构造表单的排版与布局。Table 控件以 TableRow 为基本单位 TableRow 以单元格 TableCell 为基本单位 Table 控件的 Rows 属性为所有行集合 类似,TableRow 有 Cells 属性 仅仅是为了排版的话,建议使用 HTML 的 Table 元素,Table 控件例题,【例14-2】Table 控件用法示例(复杂!)本例有两处要重点掌握,一是如何通过代码添加 Table 的行,一是对 ViewState 的操作。List 对象泛型的使用,有余力同学自己学。,8.3 HiddenField 控件,HiddenField 控件正如其名,是一个隐藏域,因此不会在界面中显示。适用场合:存储用户供页面使用或回传,但不希望显示出来的数据安全性不高,因为实际值可以在页面源代码中看到。基本属性Value 属性,注意不是 text 属性。,HiddenField 控件,【例14-3】复选框控件示例。该例有问题,首先题目就错了,关键是 ValueChanged 事件并不能触发。原因和页面加载顺序有关,真正想搞好 Web应用开发,应该仔细研究下这篇文章:http:/(ASP.NET 页生命周期概述)不能触发事件的分析,可参看这篇文章:http:/,9、ASP.NET 连接数据库及数据的显示,ASP.NET 连接数据库的方法与以前学的WINDOWS 窗体连接数据库的方法一样,在数据库部分讨论的内容基本都适用于ASP.NET。必须注意的是,WINDOWS 程序一般是对本地数据进行操作,数据绑定控件中数据直接对应数据源中的数据。而 ASP.NET 是从网络数据库服务器获得数据,数据绑定控件中的数据最终是以 HTML 方式传送到客户端,因此在页面中更改数据并不直接与数据源的数据产生联系。,9.1 数据库访问的实现方式,大部分情况下,我们获取的数据要先进行处理后才在页面中显示,用此一般不使用直接绑定数据源的方法。Web开发属于典型的B/S结构,因此三层结构是常用的系统结构,数据库操作集中在数据访问层实现。当表示层获得数据后,即可以手工处理进行显示,也可以数据源的方式填充控件。,创建数据库连接,与Windows应用不同的是,为了便于部署及更改,我们一般不在程序中写定连接字符串,而是在 Web.config文件中进行配置。Web.config文件在标记中:此连接字符串要根据自己数据库的实际情况进行配置,程序中获取连接字符串,其实标记是用来声明一些用户自定义的键值。程序中可以用ConfigurationSettings 类的AppSettings key 来获取对应的 value。因此,连接字符串则为:string conn=ConfigurationSettings.AppSettingsdatabase.ToString();此处的 database 则为配置中的 key。当然你也可以配置一些其它键值供使用。,数据库操作类,这里为大家提供一个数据库操作类SqlHelper.cs,在该类中以静态方法的方式实现了各种常用的数据库操作。有兴趣的同学可以仔细研究一下这个类。在数据访问层中只需直接用“类名.方法名”的方式调用即可。例如:string delsql=delete from company where cid=+cid;return SqlHelper.ExecSQL(delsql);,补充例题 WebApp,本例将书中的例题 14-4 改写为一般WEB开发中使用的模式,使用了SqlHelper.cs 类。采用三层模型,另外创建了实体类(Model 包中的类)。数据库名 student,表名 users,表中的字段名及数据类型可由 sqlDal.User 类中的方法看出,大家自己建立数据即可。作为练习,建议使用你现有的用户表,对代码进行修改。,9.2 数据操作控件,在 Web 方式下,也可以利用数据源及各种数据绑定控件进行数据的关联及显示。与 Windows 窗体应用程序类似,大多数可以显示内容的控件都可以作为数据绑定控件。由于网络访问性的差异,在具体使用上(数据访问组件、显示控件等),和桌面应用程序还是有一些差异。,SqlDataSource 组件,SqlDataSource 组件是一种数据源组件它可以连接到任何ADO.NET支持的数据源,并使得其他控件可以绑定到数据源。使用 SqlDataSource 组件访问数据,只需提供数据库的连接字符串,并定义访问数据的SQL语句。在运行时,SqlDataSource 组件会自动打开与数据库的连接,执行SQL语句或存储过程,完成数据访问后自动关闭连接。,SqlDataSource 主要属性,ConnectionString:设置SqlDataSource组件连接数据库时需要使用的连接字符串。执行SQL语句:SelectCommand、InsertCommand、UpdateCommand、DeleteCommand 属性都是String类型,可提供SQL语句及存储过程名称。如果是存储过程,则需要把相应的SelectCommandType,InsertCommandType,UpdateCommandType,DeleteCommandType 设定为StoredProcedure,实际使用中我们可以直接在构造方法中直接指定上述属性。例如:string cons=“”;/连接字符串 string sqlStr=“;/sql 字符串/构造方法:SqlDataSource sds=new SqlDataSource(cons,sqlStr);注意:执行上述语句后会直接进行数据访问,完成后自动关闭连接。,SqlDataSource 主要属性,DataSourceMode 属性:设置返回数据的格式。1)DataSet 对象(默认值):包含服务器内存中的所有数据,并允许在检索数据后采用各种方式操作数据。2)DataReader 对象:如果只希望返回数据并且在页面上的控件(如 ListBox、GridView)中显示该数据,则可以设置为该模式。例如:sds.DataSourceMode=SqlDataSourceMode.DataReader;,缓存及数据筛选,当 DataSourceMode 属性为 DataSet 时可开启缓存功能。通过 EnableCaching 属性确定是否进行缓存,CacheDuration 设置缓存的失效时间。缓存的使用较复杂,进一步的问题请自行查看资料。FilterExpression 属性可以设置调用Select方法时应用的筛选表达式。例题 14-4:本例通过直接拖放控件并设置属性的方式实现,我们不运行只看看代码。,数据显示控件与 SqlDataSource 绑定,实际开发中我们也可以通过代码的方式实现绑定,分为两个步骤:为显示控件指定数据源并绑定。例如将数据源对象sds 绑定到 GridView1 对象:指定数据源:GridView1.DataSource=sds;绑定:GridView1.DataBind();简单绑定,还需要说明绑定的字段,例如:listBox1.DataSource=sds;listBox1.DataTextField=name;listBox1.DataBind();,9.3 数据显示控件简介,各种数据显示控件都可以通过为它们指定数据源并进行绑定后实现数据的显示。数据显示控件非常多,既有常用的控件如TextBox、ListBox 等,也有一些主要用于显示数据库中记录并进行操作的(可看做数据访问专用控件)如 GridView、DetailView 等。这些控件再获取数据方式上大同小异,但是一些复杂绑定控件有较多的熟悉,使用也较复杂。我们仅以 GridView 为例做简单介绍。,GridView 控件,主要用作以表格的形式显示数据。它不仅可以利用数据源控件自动绑定数据显示,还可以直接使用数据源控件的数据操作命令对表中数据进行选择、排序、编辑等操作。数据绑定:如果是使用数据源组件,则通过 DataSourceID 属性指定数据源控件的ID。编程进行绑定的话则如前面介绍的通过 DataSource 属性指定数据源对象。,主要属性,AutoGenerateColumns 属性:是否为数据源中的每个字段自动创建绑定字段,默认为 true。Columns 属性:自定义GridView 中所要显示的列字段。Caption 属性:设置标题行中显示的文本。CaptionAlign 属性:设置标题行文本的显示方式。默认值为NoSet,即顶部显示,与属性值Top 相同。ShowHeader 属性:决定是否在 GridView 中显示标题行。默认值为 true。,数据编辑功能,GridView 控件提供了对其绑定的数据源进行删除、编辑、选择等操作的功能。这些功能可以通过设置以下属性来开启:AutoGenerateDeleteButton 属性:决定是否在 GridView 中自动添加带有“删除”按钮的CommandField 列字段,默认为 false。AutoGenerateEditButton 属性:决定是否在GridView控件中自动添加带有“编辑”按钮的CommandField 列字段,默认 为 false。,数据编辑功能,AutoGenerateSelectButton 属性:决定是否在 GridView 控件中自动添加带有“选择”按钮的 CommandField 列字段。默认为 false。注意,GridView 的这些编辑功能都是利用数据源的数据操作命令来完成的。SelectCommand、UpdateCommand、DeleteCommand 等。,分页和排序,GridView 控件对于显示的数据还有分页和排序的功能。AllowPaging 属性:决定是否启用分页功能,默认值为 false。PageSize 属性:设置每页所显示的记录数目。默认值为 10,即每页 10 条记录。AllowSorting 属性:决定是否启用排序功能。默认值为 false。,补充例题 WebApp2,本例将例题 WebApp 改写为使用数据源SqlDataSource 进行数据绑定的模式。请注意这两种方式的差异,本例不再采用三层模型,原因是既然使用 SqlDataSource 作为数据源,它直接与表示层的控件相关联,实际开发中往往直接声明在 aspx 文件中。而 SqlDataSource 是自动连接数据库并获取数据的,我们无法通过不同的逻辑分层对其进行控制,也无法对返回的数据进行预处理。优缺点?,10.其它控件,本书几乎介绍了工具箱中的所有 ASP 控件。许多控件很少使用,大家可以浏览一下,大致了解这些控件的功能即可,需要时再学习它们的使用。我们这里只介绍平时使用较多的菜单控件Menu 及树形导航控件 TreeView。,10.1 Menu 控件,Menu 控件,用来创建页面上的显示菜单,可以包含一个主菜单和多个子菜单。菜单具有静态和动态两种显示模式。静态显示模式:菜单始终是完全展开的,用户可以单击任何菜单项。动态显示模式:需要鼠标停留在其父菜单项上时才会显示的子菜单,而且该动态菜单在显示一定时间后,会自动消失。,常用属性,Items:设置Menu控件中的所有菜单项。Orientation:设置菜单中静态部分的排列方向,有 Horizontal 和 Vertical 两个值。MaximumDynamicDisplayLevels:设置可以动态显示的菜单的最大层数。StaticDisplayLevels:设置可以静态显示的菜单的最大层数。默认值为 1。其它一些属性可参看例题 14-14,10.2 TreeView 控件,TreeView 控件用于以树形结构显示分层数据。该控件由一个或多个节点(Node)构成。共有 3 种不同类型的节点:根节点、父节点和叶节点。其中根节点和父节点由于都有子节点,在树形结构中可以展开和折叠,又称为可折叠节点。,例 14-15,TreeView 控件的主要属性及使用,我们通过例题 14-15 来介绍。,实验,这部分实验不限定具体内容大家根据自己掌握的情况,练习一下基本的Web编程及控件的使用。通过后置文件中的处理,使页面能实现一定的操作。可以考虑把选课系统改写成 WEB 版的。,