1、第第4章章 ASP.NET服务器控件和客户端脚本服务器控件和客户端脚本4.1 控件概述控件概述4.2 HTML服务器控件服务器控件4.3 标准控件标准控件4.4 验证控件验证控件4.5 用户控件与自定义服务器控件用户控件与自定义服务器控件4.6 用用JavaScript处理页面和服务器控件处理页面和服务器控件4.7 客户端回调客户端回调4.8 文件的上传和邮件发送文件的上传和邮件发送4.9 综合应用综合应用4.1 控件概述控件概述lHTML服务器控件l公开至服务器的HTML项,控件的对象模型与相对应的HTML元素有非常密切的关系。lWeb服务器控件l并不一一对应至HTML元素,而是更抽象的控件
2、。l验证控件l用来检测用户输入的数据,避免无谓的服务器环回。l用户控件l提供在多个网页中重复使用设计好的接口一种方式。l自定义服务器控件l可以像拖曳其他Web标准控件那样方便地使用它。4.2 HTML服务器控件服务器控件lHTML标记 HTML服务器控件lHTML服务器控件主要特点:l对象模式,服务器执行后将其转译成HTML标记及属性,再发给浏览器l拥有处理客户端script的能力lHTML标记有在浏览器执行的事件(如onclick)lHTML服务器控件则还有在服务器执行的事件(如onserverclick)lHTML服务器控件支持viewstatelHTML服务器控件与验证控件整合应用,达到
3、验证窗体数据的目的lHTML服务器控件支持HTML4.01与CSS(层次样式表)l允许用户自定义属性l l Runat=“server”Id=“”System.Web.UI.HTMLControl名称空间的结构名称空间的结构 HtmlContainerControlHtmlContainerControl HtmlImageHtmlImage HtmlInputControlHtmlInputControl HtHtmlAnchormlAnchor HtmlButtonHtmlButton HtmlFormHtmlForm HtmlGenericControlHtmlGenericContro
4、l HtmlSelectHtmlSelect HtmlTableHtmlTable HtmlTableRowHtmlTableRow HtmlTableCellHtmlTableCell HtmlTextAreaHtmlTextArea HtmlInputButtonHtmlInputButton HtmlInputCheckBoxHtmlInputCheckBox HtmlInputHtmlInputFileFileHtmlInputHiddenHtmlInputHidden HtmlInputImageHtmlInputImage HtmlInputRadioButtonHtmlInput
5、RadioButton HtmlInputTextHtmlInputText HtmlControlHtmlControlIddisabledVisibleTagNameInnerHtmlInnerTextTypeValueServerClickServerChangeHTML服务器控件与服务器控件与HTML标记的对应表示标记的对应表示HTML服务器控件的应用服务器控件的应用【例4.1】使用HTML服务器控件完成一个表单,实现简单的用户登录和提交留言。服务器端编程获取用户所填写的内容并输出。页面设计:页面中放置两个文本框(User(ID值)用于输入用户名、Password用于输入密码),两个多
6、行文本框(messeage用于显示登录或留言信息、comment用于输入留言信息),两个按钮(BtnLogin表示登录单击的“确定”、BtnOK表示发表留言的“提交”)。网页界面如图4.3所示。前台文件example4-1.aspx实现表单的页面部分,后台文件example4-1.aspx.cs实现事件代码处理部分。图4.3 example4-1的界面HTML服务器控件的应用服务器控件的应用本例网页example4-1.aspx页面代码。页面后台example4-1.aspx.cs文件的代码。按钮BtnLogin的单击事件BtnLogin_ServerClick用于判断用户是否输入正确的用户名
7、和密码。如果正确登录,则在多行文本框message中显示“成功登录系统”,否则显示“用户名或密码错误”。按钮BtnOK的服务器端单击事件为BtnOK_ServerClick,用来接受多行文本框comment的信息,并显示在message中。程序运行结果如图4.4所示。图4.4 例4.1运行结果4.3 Web服务器控件服务器控件l以开头,结尾l拥有更多功能与特殊目的的控件,(如calendar、AdRotator)l具有更丰富的对象,提供类型安全程序设计功能l与浏览器无关l部分控件可以通过使用模板自定义输出结果(如Repeater、Datalist及GridView控件l部分控件可以指定在数据或
8、选取项改变时,将数据返回至服务器,无须等待浏览器执行发送的操作,如DropDownList控件l除了少数的HTML服务器控件外,可以完全代替HTML服务器控件。l声明举例:llWeb服务器控件的层次结构服务器控件的层次结构Web服务器控件服务器控件标准控件标准控件l基本控件lLabel、Literal、TextBoxlButton、LinkButton、ImageButtonlCheckBox、CheckBoxList,RadioButton、RadioButtonList,ListBox、DropDownListlHyperLinklTablel增强控件(多信息控件)lCalendar,Ad
9、Rotator,XML,MultiView、View,Image、ImageMap,Wizard 相关概念相关概念l环回l每项需要处理的动作必须由窗体传送给服务器处理,然后再返回给浏览器。这一过程叫“环回(Round Trip)”或“往返行程.l重建网页l每一次环回都会使得网页重新生成。网页是无状态的,即网页变量与控件的数据值并不会保留在服务器上。l内部事件集l服务器控件提供一组有限的内部事件集,并且仅限于鼠标按键类型的事件。l不要触发那些经常会发生的事件(onmouseover)l事件参数l所有事件都会传递两个参数,第一个参数内含与事件相关信息的事件对象(object sender),第二个
10、参数是事件类型相关的参数信息(EventArgs e)l回传与非回传事件l发生在服务器控件中的变动事件会被捕捉,但是不会立即被提交。Web页面请求及服务器响应的过程页面请求及服务器响应的过程4.3 标准控件标准控件h 1服务器控件的基本语法服务器控件的基本语法ASP.NET服务器控件的基本语法格式如下:下面的关于某个TextBox控件的两种不同的写法是等价的:请输入姓名:h 2服务器控件的属性服务器控件的属性3服务器控件的事件服务器控件的事件例:注册表单例:注册表单4.3.1 输入与显示控件输入与显示控件h 1TextBox控件控件TextBox控件是用得最多的控件之一,该控件显示为文本框,可
11、以用来显示数据或者输入数据。TextBox控件定义的语法示例如下:属性属性/事件事件/方法方法说说 明明AutoPostBack指示在输入信息时,数据是否实时自动回发到服务器指示在输入信息时,数据是否实时自动回发到服务器AutoCompleteType记忆客户端输入的内容类型(控制控件的自动完成功能)记忆客户端输入的内容类型(控制控件的自动完成功能)MaxLength文本框中最多允许的字符数文本框中最多允许的字符数ReadOnly指示能否更改指示能否更改 TextBox 控件的内容控件的内容Rows多行文本框中显示的行数多行文本框中显示的行数TextTextBox 控件的文本内容控件的文本内容
12、TextModeTextBox 控件的行为模式(单行、多行或密码)控件的行为模式(单行、多行或密码)Wrap指示多行文本框内的文本内容是否换行指示多行文本框内的文本内容是否换行TextChanged文本框的内容改变时发生的事件文本框的内容改变时发生的事件Focus()使光标置于文本框中的方法使光标置于文本框中的方法表4.5 TextBox控件的常用属性、事件和方法h 2Label控件控件Label 控件用于在Web页面上显示文本。其控件定义的语法示例如下:属性属性说说 明明runat规 定 该 控 件 是 一 个 服 务 器 控 件。必 须 设 置 为规 定 该 控 件 是 一 个 服 务 器
13、 控 件。必 须 设 置 为 serverText在在 label 中显示的文本中显示的文本 AccessKey指定热键的按键指定热键的按键 AssociatedControlID将将Label控件与窗体中另一个服务器控件关联起来控件与窗体中另一个服务器控件关联起来表4.6 Label控件的常用属性h 3Literal控件控件Literal控件的工作方式类似于Label控件。用于在浏览器上显示在整个过程中不发生变化的文本。其控件定义的语法示例如下:。属属 性性说说 明明Text规定要显示的文本规定要显示的文本 Mode指定控件对所添加的标记的处理方式指定控件对所添加的标记的处理方式表4.7 L
14、iteral控件的常用属性4.3.2 按钮控件按钮控件h 1Button控件控件h 2LinkButton控件控件h 3ImageButton控件控件作用:提交页面相关事件:(1)Page_load事件(2)Click事件。属性属性/事件事件/方法方法说说 明明Attributes获取控件的属性集合获取控件的属性集合BackColor获取或设置背景色获取或设置背景色BordorColor获取或设置边框颜色获取或设置边框颜色CommandArgument获取或设置可选参数,该参数与获取或设置可选参数,该参数与CommandName一起一起传递到传递到Command事件事件CommandName获
15、取或设置命令名,该命令名与传递给获取或设置命令名,该命令名与传递给Command事件事件的的Button控件相关联控件相关联EnableViewState获取或设置一个值,指示服务器控件是否保持自己及所获取或设置一个值,指示服务器控件是否保持自己及所包含子控件的状态包含子控件的状态PostBackUrl获取或设置单击获取或设置单击Button时从当前页发送到的网页的时从当前页发送到的网页的URL。默认为空,即本页默认为空,即本页Text获取或设置在获取或设置在Button控件中显示的文本标题控件中显示的文本标题Click在单击在单击Button控件时发生的服务器端事件控件时发生的服务器端事件O
16、nClientClick在单击在单击Button控件时发生的客户端事件控件时发生的客户端事件Command在单击在单击Button控件时发生的服务器端事件控件时发生的服务器端事件表4.8 Button控件的常用属性、事件和方法4.3.3 选择和列表控件选择和列表控件(webcontrol1)h1RadioButton控件控件【例4.2】页面上的一组RadioButton控件可以定义如下:属性属性/事件事件说说 明明Checked布尔值,规定是否选定单选按钮布尔值,规定是否选定单选按钮AutoPostBack布尔值,规定在布尔值,规定在 Checked 属性被改变后,是否立即属性被改变后,是否立
17、即回传表单。默认是回传表单。默认是 falseGroupName该单选按钮所属控件组的名称该单选按钮所属控件组的名称OnCheckedChanged当当 Checked 被改变时,被执行的函数的名称被改变时,被执行的函数的名称Text单选按钮旁边的文本单选按钮旁边的文本TextAlign文本应出现在单选按钮的哪一侧(左侧还是右侧)文本应出现在单选按钮的哪一侧(左侧还是右侧)表4.10 RadioButton控件的常用属性和事件h 2RadioButtonList控件控件RadioButton控件优于RadioButtonList控件的一个方面是,可以在RadioButton控件之间放置其他项(
18、文本、控件或图像)。虽然多个RadioButton控件也可以组成单选按钮组以实现互斥选择,但有多个选项供用户进行选择时,使用RadioButtonList控件更加方便。RadioButtonList控件定义示例如下,男女 保密属性属性/事件事件说说 明明AutoPostBack指示当用户改变选项时该控件是否自动地回发到服务器指示当用户改变选项时该控件是否自动地回发到服务器DataMemberDataSource中要绑定的表名中要绑定的表名DataSource填充该列表的列表项的数据源填充该列表的列表项的数据源DataSourceID提供数据的数据源组件的提供数据的数据源组件的IDDataTex
19、tField提供列表项的文本的数据源字段的名称提供列表项的文本的数据源字段的名称DataTextFormatString用来控制列表项的显示方式的格式化字符串用来控制列表项的显示方式的格式化字符串DataValueField提供一个列表项的值的数据源字段的名称提供一个列表项的值的数据源字段的名称Items获得列表控件中的项目集合获得列表控件中的项目集合RepeatColumns获得或设置控件中要显示的列数获得或设置控件中要显示的列数RepeatDirection获得或设置一个指示该控件垂直显示还是水平显示的值获得或设置一个指示该控件垂直显示还是水平显示的值RepeatLayout获得或设置单选
20、按钮(表或流)的布局获得或设置单选按钮(表或流)的布局SelectedIndex获得或设置列表中第一个被选项的索引即索引最小的项获得或设置列表中第一个被选项的索引即索引最小的项SelectedItem获得第一个被选项获得第一个被选项SelectedValue获得第一个被选项的值获得第一个被选项的值TextAlign获得或设置单选按钮的文本对齐方式获得或设置单选按钮的文本对齐方式SelectedIndexChanged当在当在RadioButtonList中改变选择时触发的事件中改变选择时触发的事件表4.11 RadioButtonList控件的常用属性和事件RadioButtonList控件的
21、Items集合的成员和列表中的每一项对应,要确定选中了哪些项,应测试每项的Selected属性。ListItem的基本属性如表4.12所示。属性属性/事件事件说说 明明Text每个选项的文本每个选项的文本Value每个选项的值每个选项的值Selected选项的状态,选项的状态,Ture表示默认选中表示默认选中表4.12 ListItem的基本属性h 3CheckBox控件控件CheckBox控件定义示例如下:属性属性/事件事件说明说明Checked布尔值,规定是否选定单选按钮布尔值,规定是否选定单选按钮AutoPostBack布尔值,规定在布尔值,规定在 Checked 属性被改变后,是属性被
22、改变后,是否立即回传表单。默认是否立即回传表单。默认是 falseOnCheckedChanged当当 Checked 被改变时,被执行的函数的名称被改变时,被执行的函数的名称TextCheckBox控件旁边的文本控件旁边的文本TextAlign文本应出现在文本应出现在CheckBox的哪一侧(左侧还是的哪一侧(左侧还是右侧)右侧)h 4CheckBoxList控件控件【例4.3】CheckBoxList控件定义如下:琴棋 书 画CheckBoxList控件的SelectedIndexChanged事件。h 5DropDownList控件控件【例4.4】DropDownList控件在Web页面
23、上呈现为下拉列表框,它允许用户从预定义的多个选项中选择一项。在选择前,用户只能看到第一个选项,其余的选项都“隐藏”起来。通过设置该控件的高度和宽度(以像素为单位),可以设定控件的大小,但是不能控制该列表拉下时显示的项目数。DropDownList控件定义示例如下:您的学历:博士 硕士本科属性属性/事件事件说明说明AutoPostBack指示当用户改变选项时该控件是否应当自动地回发到服务指示当用户改变选项时该控件是否应当自动地回发到服务器器DataMemberDataSource中要绑定的表的名称中要绑定的表的名称DataSource填充该列表的项目的数据源填充该列表的项目的数据源DataSou
24、rceID提供数据的数据源组件的提供数据的数据源组件的IDDataTextField提供列表的文本的数据源字段的名称提供列表的文本的数据源字段的名称DataTextFormatString用来控制列表项的显示方式的格式化字符串用来控制列表项的显示方式的格式化字符串DataValueField提供一个列表项的值的数据源字段的名称提供一个列表项的值的数据源字段的名称Items获得列表控件中的项目集合获得列表控件中的项目集合SelectedIndex获得或设置列表中被选项的索引获得或设置列表中被选项的索引SelectedItem获得列表中的被选项获得列表中的被选项SelectedValue获得列表中
25、被选项的值获得列表中被选项的值SelectedIndexChanged 当列表控件的选择项发生变化时触发当列表控件的选择项发生变化时触发表4.14 DropDownList控件的常用属性和事件h 6ListBox控件控件【例4.5】ListBox控件定义示例如下:身份:已工作 大学生 中学生/中专技校 以上都不是ListBox控件的SelectedIndexChanged事件。7BulletedList控件控件以下是一个BulletedList控件的定义示例:第一项第二项属属 性性说说 明明BulletImageUrl获得或设置到用做项目符号的图像的路径获得或设置到用做项目符号的图像的路径Bu
26、lletStyle确定项目符号的样式确定项目符号的样式DataMemberDataSource中要绑定的表的名称中要绑定的表的名称DataSource用来填充该列表控件的列表项的数据源用来填充该列表控件的列表项的数据源DataSourceID提供数据的数据源组件的提供数据的数据源组件的IDDataTextField提供列表项的文本的数据源字段的名称提供列表项的文本的数据源字段的名称DataTextFormatString用来控制列表项显示样式的格式化字符串用来控制列表项显示样式的格式化字符串DataValueField提供列表项的值的数据源字段的名称提供列表项的值的数据源字段的名称Displa
27、yMode确定如何显示列表项:纯文本、链接按钮或超链接确定如何显示列表项:纯文本、链接按钮或超链接FirstBulletNumber获得或设置编号的起始值获得或设置编号的起始值Items获得列表控件中的列表项的集合获得列表控件中的列表项的集合Target指示超链接模式下的目标框架指示超链接模式下的目标框架表4.15 BulletedList控件的属性枚枚 举举 值值说说 明明Circle表示项目符号编号样式设置为表示项目符号编号样式设置为“”空圈空圈CustomImage编 号 样 式 设 置 为 自 定 义 图 片,图 片 由编 号 样 式 设 置 为 自 定 义 图 片,图 片 由Bull
28、etImageUrl属性指定属性指定Disc编号样式设置为编号样式设置为“”实圈实圈LowerAlpha编号样式设置为小写字母格式,如编号样式设置为小写字母格式,如a、b、c、d等等LowerRoman编号样式设置为小写罗马数字格式,如编号样式设置为小写罗马数字格式,如i、ii、iii、iv等等NotSet表示不设置项目符号编号样式表示不设置项目符号编号样式Numbered编号样式为数字格式,如编号样式为数字格式,如1、2、3、4等等Square编号样式为编号样式为“”实体黑方块实体黑方块UpperAlpha编号样式为大写字母格式,如编号样式为大写字母格式,如A、B、C、D等等UpperRom
29、an编号样式为大写罗马数字格式,如编号样式为大写罗马数字格式,如I、II、III、IV等等表4.16 BulletStyle枚举值列表4.3.4 HyperLink控件控件HyperLink服务器控件在Web页上创建超级链接,使用户可以在应用程序中的页之间移动跳转到其他页面,相当于HTML中的元素。HyperLink控件定义的语法格式如下:网站服务条款此行代码定义一个超级链接 。表4.17列出了HyperLink控件的常用属性。属属 性性说说 明明ImageUrl 显示此链接的图像的显示此链接的图像的 URLNavigateUrl 该链接的目标该链接的目标 URL,当用户单击链接时会转向,当用
30、户单击链接时会转向此此URLTarget URLURL的目标框架,默认为本框架,的目标框架,默认为本框架,_blank表示表示新窗口新窗口Text显示该链接的文本显示该链接的文本表4.17 HyperLink控件的常用属性4.3.5 Table控件控件 对对 象象成成 员员功功 能能TableBackImageUrlCaptionCaptionAlignCellPaddingCellSpacingRows表格的背景图像的表格的背景图像的 URL表格的标题表格的标题标题文本的对齐方式标题文本的对齐方式Table中单元格内容和单元格边框之间的空间量(单位:中单元格内容和单元格边框之间的空间量(单位
31、:像素)像素)Table控件中相邻单元格之间的空间量(以像素为单位)控件中相邻单元格之间的空间量(以像素为单位)Table控件中行的集合控件中行的集合TableRowHorizontalAlighVerticalAlighCells获取或设置行内容的水平对齐方式获取或设置行内容的水平对齐方式获取或设置行内容的垂直对齐方式获取或设置行内容的垂直对齐方式获取获取TableCell对象的集合,这些对象表示对象的集合,这些对象表示Table控件控件中的行的单元格中的行的单元格TableCellColumnSpanRowSpanText获取或设置该单元格在获取或设置该单元格在Table跨越的列数跨越的列
32、数获取或设置获取或设置Table控件中单元格跨越的行数控件中单元格跨越的行数获取或设置单元格的文本内容获取或设置单元格的文本内容动态地创建一个Table包含三个步骤:【例4.6】(1)创建TableRow对象以表示表中的行。(2)创建TableCell对象,表示行中的单元格,并将单元格添加到行中。(3)将TableRow添加到Table控件的Rows集合中。l声明语法:llAdvertisementFile:获取或设置包含广告信息的XML广告调度文件的相对或绝对地址lTarget:广告所链接的网页在哪个框架或窗口打开_self/_blank/_parent/_toplOnAdCreated:在
33、AdRotator控件创建后,网页提交前会触发此事件,其参数为AdCreatedEventArgslAdCreatedEventArgs的属性lAdProperties:目前显示的广告的相关信息lAlternateText:显示广告的替换文本lImageUrl:目前广告的图片源地址lNavigateUrl:会把用户定向到哪个网址lImpressions:广告的重要等级lKeyWords:广告的类4.3.6 AdRotator控件控件可扩展标记语言可扩展标记语言XMLl可扩展标记语言XML(eXtensibleMarkup Language)是W3C组织于1998年2月发布的标准lXML专门用来
34、描述文本的结构,而不是用来描述如何显示文本;lXML没有一套固定的标记;lXML区分大小写;lXML文档分层嵌套形成一棵标记树,只有根标记,每个元素由一个开始标记和一个结束标记组成,所有属性必须用引号表示。标标 签签说说 明明Advertisements包含整个广告文件包含整个广告文件Ad描述每一个单独的广告描述每一个单独的广告ImageUrl要显示的图像的要显示的图像的URL。必需。必需NavigateUrl单击该控件时定位到的单击该控件时定位到的URLAlternateText图像不可用时要显示的文本。在某些浏览器中,该文本图像不可用时要显示的文本。在某些浏览器中,该文本显示为工具提示显示
35、为工具提示Keyword广告类别。该关键字可用于通过设置广告类别。该关键字可用于通过设置KeywordFilter属属性过滤要显示的广告性过滤要显示的广告Impressions一个值,指示相对于一个值,指示相对于XML文件中的其他广告,该广告文件中的其他广告,该广告显示的频率显示的频率表4.21 在广告文件中使用的XML标签下面是一个下面是一个XML广告文件广告文件ad.xml的例子:的例子:【例4.7】/image/phei.png http:/ 门户门户 20 /image/sohu.gif http:/ 搜狐搜狐 门户门户 80 /image/njnu.jpg http:/ 南京师范大学
36、南京师范大学 大学大学 50 4.3.7 Calendar控件控件主要功能:(1)显示一个日历,该日历会显示一个月份。)显示一个日历,该日历会显示一个月份。(2)允许用户选择日期、周、月。)允许用户选择日期、周、月。(3)允许用户选择一定范围内的日期。)允许用户选择一定范围内的日期。(4)允许用户移到下一月或上一月。)允许用户移到下一月或上一月。(5)以编程方式控件选定日期的显示。)以编程方式控件选定日期的显示。Calendar控件的最简单形式如下:图4.15 Calendar控件1在在Calendar控件中选择日期控件中选择日期【例4.8】Calendar控件有4种日期获取模式,用户可以选择
37、一天、一周或一个月。通过设置控件的SelectionMode属性来实现。模模 式式说说 明明Day允许用户选择单个日期。这是默认值允许用户选择单个日期。这是默认值DayWeek允许用户选择单个日期或整周允许用户选择单个日期或整周DayWeekMonth允许用户选择单个日期、周或整个月允许用户选择单个日期、周或整个月None不能选择日期不能选择日期表4.23 Calendar控件的SelectionMode属性h 2控制控制Calendar控件的外观控件的外观许多TableItemStyle类型的属性用于控制日历每个部分的样式。名名 称称所设置样式的对象所设置样式的对象DayHeaderStyl
38、e一周中某天一周中某天DayStyle日期日期NextPrevStyle月份导航控件月份导航控件OtherMonthDayStyle 不在当前显示月份中的日期不在当前显示月份中的日期SelectedDayStyle选中日期选中日期SelectorStyle周和月选择器列周和月选择器列TitleStyle标题栏标题栏TodayDayStyle今天的日期今天的日期WeekendDayStyle周末日期周末日期表4.24 Calendar中TableItemStyle类型的属性除TableItemStyle类型的属性,还有几个可读写的Boolean类型属性,它们也用于控制日历的外观,属属 性性默认值
39、默认值控制其可见性的对象控制其可见性的对象ShowDayHeadertrue一周中每一天的名称一周中每一天的名称ShowGridLinesfalse月份中日期的网格线月份中日期的网格线ShowNextPrevMonthtrue月份导航控件月份导航控件ShowTitletrue标题栏标题栏表4.25 Boolean 类型的属性 Calendar控件示例控件示例ToDayDayStyleSelectedDayStyleWeekendDayStyleDayStyleOtherMonthDayStyleTitleStyleNextPrevStyleSelectMonthText属性SelectWeek
40、Text属性DayHeaderStyleh 3Calendar控件编程控件编程【例4.9】(1)SelectionChanged事件。当用户在Calender控件中选择一天、一周或整个月份时,将触发SelectionChanged事件。以编程方式选择时,并不触发该事件。该事件处理程序传递一个EventArgs类型参数。前面在例4.9中,已经给出此事件的示例。(2)DayRender事件。Calendar控件不直接支持日期绑定,但可以修改单个日期单元格的内容和格式。这样可从数据库中获取数据,以便进行一些处理后把它们置于指定的单元格中。在在Calendar控件呈现到客户端浏览器之前,将组成创建该控
41、件的控件呈现到客户端浏览器之前,将组成创建该控件的所有组件。随着创建每个单元格,将引发所有组件。随着创建每个单元格,将引发DayRender事件。可以捕获事件。可以捕获该事件。该事件。DayRender事件处理程序接收两个DayRenderEventArgs类型的参数。该对象有两个属性,它们可以用编程方式读取。Cell:表示要呈现的单元格的表格单元格对象。Day:表示呈现在单元格中日期的CalendarDay对象。(3)VisibleMonthChanged事件。Calendar控件还提供了一个事件VisibleMonthChanged以确定用户是否更改了月份。图4.18 在Calendar控
42、件中自定义特别日4.3.8 Image和和ImageMap控件控件h 1Image控件控件图像服务器控件Image可以在Web窗体页上显示图像,并用服务器端的代码管理这些图像。Image控件定义格式如下:Image控件有下列常见属性:(1)AlternateText:为图像提供替代文本(辅助功能要求)。(2)DescriptionUrl:用于提供指向包含该图像详细描述的页面的链接(复杂的图像要求可访问)。(3)GenerateEmptyAlternateText:为AlternateText属性设空字符串值。(4)ImageAlign:用于将图像和页面中其他HTML元素对齐。可能的值有AbsB
43、ottom、AbsMiddle、Baseline、Bottom、Left、Middle、NotSet、Right、TextTop和Top。(5)ImageUrl:用于指定图片的URL。h 2ImageMap控件控件ImageMap控件定义格式如下:ImageMap控件的主要属性包括如下。(1)HotSpotMode:热点模式,取值为枚举System.Web.UI.WebControls.HotSpotMode,值如表4.26所示。枚枚 举举 值值说说 明明NotSet未设置。虽然名为未设置,但默认情况下会执行定向操作,未设置。虽然名为未设置,但默认情况下会执行定向操作,定向到指定的定向到指定的
44、URL地址。如果未指定地址。如果未指定URL地址,将定向到地址,将定向到Web应用程序根目录应用程序根目录Navigate定向操作。定向到指定的定向操作。定向到指定的URL地址。如果未指定地址。如果未指定URL地址,地址,默认将定向到默认将定向到Web应用程序根目录应用程序根目录PostBack回发操作。单击热点区域后,将执行回发操作。单击热点区域后,将执行Click事件事件Inactive无任何操作,即此时无任何操作,即此时ImageMap如同一张没有热点区域的普如同一张没有热点区域的普通图片通图片表4.26 HotSpotMode枚举值【例4.10】(2)HotSpots:该属性对应Sys
45、tem.Web.UI.WebControls.HotSpot对象集合。HotSpot类是一个抽象类,有CircleHotSpot(圆形热区)、RectangleHotSpot(方形热区)、PolygonHotSpot(多边形热区)3个子类。实际应用中,可以使用上面3种类型来定制图片的热点区域的形状。(3)AccessKey:用于指定导向ImageMap控件的键。(4)AlternateText:为图像提供替代文本(辅助功能要求)。(5)DescriptionUrl:用于提供指向一个页面的链接,该页面包含对该图像的详细描述(复杂的图像要求能被理解)。(6)GenerateEmptyAlterna
46、teText:为AlternateText属性设空字符串值。(7)ImageAlign:用于和页面中其他HTML元素对齐。可能的值有AbsBottom、AbsMiddle、Baseline、Bottom、Left、Middle、NotSet、Right、TextTop和Top。(8)ImageUrl:用于指定图像的URL。(9)TabIndex:设置ImageMap控件的Tab顺序。(10)Target:用于在新窗口中打开页面。ImageMap控件支持Click事件,在用户对热点区域单击时触发,通常在HotSpotMode为PostBack时用到。4.3.9 MultiView和和View控件
47、控件【例4.11】View控件是视图控件,MultiView控件是多视图控件,两者都属于容器控件,View控件是一个Web控件的容器,而MultiView控件又是View控件的容器,因此两者一般一起搭配运作。在MultiView控件中可以拖曳多个View控件,而View控件内包含了任何需要显示在页面中的内容,存放一般ASP.NET服务器控件的,如Image、TextBox等。虽然MultiView中可包含多个View控件,但页面一次只能显示一个视图,因此也只有一个View控件区域会被显示。MultiView通过ActiveViewIndex属性值来决定哪个View要被显示,程序也是利用Acti
48、veViewIndex属性设置来切换不同的ViewView和MultiView控件格式如下:View和MultiView控件继承自System.Web.UI.Control类。MultiView控件有一个类型为ViewCollection的只读属性View。使用该属性可获得包含在MultiView中的View对象集合。与所有的.NET集合一样,该集合中的元素被编入索引。MultiView控件包含ActiveViewIndex属性,该属性可获取或设置以0开始的,当前活动视图的索引。表4.27列出了MultiView控件的4个CommandName字段。为按钮的CommandName属性赋值,能够
49、实现视图导航。例如,将Button、ImageButton或LinkButton控件的CommandName属性设置为NextView,单击这些按钮后将自动导航到下一个视图,而不需要额外的代码。开发者不需要为按钮编写单击事件处理程序。字字 段段默认命令名默认命令名说说 明明NextViewCommandNameNextView导 航 到 下 一 个 具 有 更 高导 航 到 下 一 个 具 有 更 高ActiveViewIndex值的视图。如值的视图。如果当前位于最后的视图,则设置果当前位于最后的视图,则设置Active-ViewIndex为为-1,不显示,不显示任何视图任何视图Previou
50、sViewCommandNamePrevView导航到低于导航到低于ActiveVie-wIndex值值的视图。如果当前位于第一个视的视图。如果当前位于第一个视图,则设置图,则设置ActiveViewIndex为为-1,不显示任何视图,不显示任何视图SwitchViewByIDCommandNameSwitchViewByID导航到指定导航到指定ID的视图,可以使用的视图,可以使用CommandArgument指定指定ID值值SwitchViewByIndexCommandNameSwitchViewByIndex导航到指定索引的视图,使用导航到指定索引的视图,使用CommandArgumen