文章教程

5.5其他常用高级控件

8/31/2020 9:52:39 PM 人评论 次浏览

5.5 其他常用高级控件

前面章节中介绍的都是基本Web服务器控件,在编程的时候使用的也最多,下面介绍的是几个高级Web服务器控件,则部分控件可以更好地增强用户的体验,减少开发时间。

5.5.1 Calendar控件

Calendar控件实现一个传统的单月份日历,用户可以使用该日历查看和选择日期。Calendar控件可以完成如下的功能:

● 显示日历,该日历会显示月份,包括该月之前的一周和之后的一周,所以说,一共显示六周。

● 允许用户选择日、周、月。

● 允许用户选择一定范围内的日期。

● 允许用户移到下一月或上一月。

● 以编程的方式控制选定日期的显示。

● 自定义日历的外观。

Calendar控件的使用语法定义如下所示:

alt

alt

上述定义将在Web页面上生成一个显示当前月份的日历,如图5-31所示。无需手工编写代码,这个日历具有一些常见的功能。日历控件在页面上显示一个月的日历视图,使用两端的箭头可以逐月浏览。当选择某一日期时,该日期就在一个灰色的盒子里呈高亮显示,而且会引发页面回送。开发人员可以利用这个特点对日历控件编程。

alt

图5-31 Calendar控件

Calendar控件是类Calendar的对象,类Calendar将时间分段表示,例如分成星期、月和年,日历将按时间单位(如星期、月和年)划分,每种日历中分成的段数、段的长度和起始点均不同。使用特定日历可以将任何时刻表示成一组数值,例如,2008年的奥运会开幕时间是2008,8,8,8,8,8,0.0,即公元2008年8月8日8:8:8:0.0。Calendar的实现可以将特定日历范围内的任何日期映射到一个类似的数值集,并且DateTime可以使用Calendar和DateTimeFormatInfo中的信息将这些数值集映射为一种文本表示形式。文本表示形式可以是区分区域性的(例如,按照en-US区域性表示的“8:46 AM March 20th 1999 AD”),也可以是不区分区域性的(例如,以ISO 8601格式表示的“1999-03-20T08:46:00”)。

由于Calendar控件比较复杂,所以除基本属性之外,它还有以下的常用属性。

● DayNameFormat:获取或设置“周”中各天的名称格式,其值是一个名为DayNameFormat的枚举类型,该枚举类型的值包括FirstLetter、FirstTowLetter、Short、Full、Shortest。

● FirstDayOfWeek:获取或设置要在Calendar控件的“第一天”列中显示的一周中的某天。可以设置为Default、Sunday、Monday、Tuesday、Wednesday、Thursday、Friday和Saturday。

● NextMonthText:获取或设置为下一月导航控件显示的文本。ShowNextPreMonth属性必须设置为true,并且NextPreMonth属性设置为CustomText时才有效。

● NextPrevFormat:获取或设置Calendar控件的标题部分中下个月和上个月导航元素的格式。可以设置为ShortMonth、FullMonth及默认值CustomText。

● SelectedDate:获取或设置选定的日期。默认为程序执行的日期。

● SelectedDates:获取System.DateTime对象的集合,这些对象表示Calendar控件上的选定日期。

● SelectionMode:获取或设置Calendar控件上的日期选择模式。可设置值分别为Day、None、DayWeek、DayWeekMonth。其中,值为Day时,用户只可以选中某一天为默认值;值为None时,不能选取日期,只能显示日期、值为DayWeek时,用户可以一次选取整个星期或者某一天;值为DayWeekMonth时,用户可以一次选取这个月、整个星期或者某一天。

● SelectionMonthText:获取或设置为选择器列中的月份选择元素显示的文本。要将SelectionMode属性设置为DayWeekMonth时才有效。

● SelectWeekText:获取或设置为选择器列中周选择元素显示的文本。要将SelectionMode属性设置为DayWeekMonth才有效。

● ShowDayHeader:获取或设置一个值,该值指示是否显示一周中各天的标头。有true和false二个选项。

● ShowGridLines:获取或设置一个值,该值指示是否用网格线分割Calendar控件上的日期。

● ShowNextPrevMonth:获取或设置一个值,该值指示Calendar控件是否在标题部分显示下个月和上个月导航元素。

● ShowTitle:获取或设置一个值,该值指示是否显示标题部分。

● TitleFormat:获取或设置标题部分的格式,可以设置默认值MonthYear或Month。

● TodaysDate:获取或设置当天的日期的值。

● VisibleDate:获取或设置指定要在Calendar控件上显示的月份的日期。

Calendar控件除了各种属性之外,它还有以下的常用方法和事件。

● AddDays:返回与指定的DateTime相距指定天数的DateTime。

● AddMonths:返回与指定DateTime相距指定月数的DateTime。

● AddWeeks:返回与指定DateTime相距指定周数的DateTime。

● AddYears:返回与指定DateTime相距指定年数的DateTime。

● GetDayOfMonth:返回指定DateTime中的日期是该月的几号。

● GetDayOfWeek:返回指定DateTime中的日期是星期几。

● GetDayOfYear:返回指定DateTime中的日期是该年中的第几天。

● GetDaysInMonth:返回指定月份中的天数。

● GetDaysInYear:返回指定年份中的天数。

● GetLeapMonth:计算指定年份或指定纪元年份的闰月。

● GetMonth:返回指定的DateTime中的月份。

● GetMonthsInYear:返回指定年份中的月数。

● GetWeekOfYear:返回年中包括指定DateTime中日期的星期。

● GetYear:返回指定DateTime中的年份。

● IsLeapMonth:确定某月是否为闰月。

● IsLeapYear:确定某年是否为闰年。

● ToDateTime:返回设置为指定日期和时间的DateTime。

● SelectionChanged事件:当用户选取日期时,会驱动SelectionChanged指定的事件。

● DayRender事件:Calendar控件每产生一个日期都会触发该事件。

● VisibleMonthChanged事件:当用户单击日历控件标题上的“上个月”或“下个月”按钮时触发。

有以下几种方法可以设置Calendar控件的外观:

● 使用“自动套用格式”对话框选择外观格式。

● 设置属性。

● 设置扩展样式属性。

● 自定义个别日期呈现。

【实例5-14】Calendar控件的使用

本例在网页上显示一个日历控件,外观通过该控件的属性来设置,显示用户选择的日期通过编程的方式来实现,具体的步骤如下所示:

01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例5-14”。

02 在“实例5-14”中创建一个名为Default.aspx的窗体。

03 单击网站目录下的Default.aspx文件,进入“视图编辑”界面,打开“设计视图”对话框,向页面添加一个Calendar控件和一个Label控件。

04 将鼠标移到Calendar1控件上,其上方会出现一个如图5-32所示向右的小三角。单击它会弹出“Calendar任务”列表。

alt

图5-32 “Calendar任务”列表

05 选择列表中“自动套用格式”命令,弹出如图5-33所示的“自动套用格式”对话框。选择左侧“选择架构”列表中的“专业型2”,在右侧的浏览窗口可以看到所选日历的外观格式的效果。最后,单击“确定”按钮。

alt

图5-33 “自动套用格式”对话框

06 单击网站目录下的Default.aspx.cs文件,编写代码如下:

alt

上面的代码中,第1行定义处理日历控件Calendar1选择改变事件SelectionChanged的方法。第3行~第5行获得选择日期的年、月、日。第5行~第14行使用switch-case语句判断用户选择的日期是星期几。第15行在标签控件Label1上显示用户在日历中所选择的日期。

第17行定义处理日历Calendar1控件呈现日时激发事件DayRender的方法。第18行判断日期如果是周末,第19行设置该日期显示的背景颜色,第20行添加显示的文字,第21行设置该日期不可被选。

07 按快捷键Ctrl+F5运行程序,如图5-34所示。

alt

图5-34 运行结果

5.5.2 AdRotator控件

AdRotator服务器控件用于在Web窗体中显示一些广告的内容。广告或公司标志是网站顶部最常见的元素,AdRotator控件提供了一种在页面上显示广告的简便方法,该控件能够显示图形图像,当用户单击广告时,会将用户导向指定的URL,并且该控件能够从数据源中自动读取广告信息。

AdRotator控件显示广告的方式有如下三种:

● 随机显示广告。

● 对广告设置优先级别以使某些广告有更多显示频率。

● 编写循环逻辑来显示广告。

AdRotator控件可以从如下各种形式的数据源中读取数据:

● XML文件。

● 数据库。

自定义逻辑,为AdCreated事件创建一个处理程序,并在该事件中选择一条广告。AdRotator控件定义的格式代码如下所示:

alt

alt

AdRotator控件除了基本属性之外,还有以下一些重要的属性和事件。

● AdvertisementFile:获取或设置包含广告信息的XML文件的路径。

● AlternateTextField:获取或设置一个自定义数据字段,使用它代替广告的AlternateText属性。

● Font:获取与广告横幅控件关联的字体属性。

● ImageUrlField:获取或设置一个自定义数据字段,使用它代替广告的ImageUrl属性。

● KeywordFilter:获取或设置类别关键字以筛选出XML公布文件中特定类型的公布。

● NavigateUrlField:获取或设置一个自定义数据字段,使用它代替广告的NavigateUrl属性。

● TagKey:获取AdRotator控件的HTML标记,该属性是受保护的。

● Target:获取或设置当单击AdRotator控件时,显示所链接到的页面内容的浏览器窗口或框架名称。

● UniqueID:获取AdRotator控件在层次结构中的唯一限定标识符。

● PerformDataBinding:将指定数据源绑定到AdRotator控件。

● PerformSelect:将关联数据源检索广告数据。

● Render:在客户端上显示AdRotator控件。

● OnAdCreated事件:每次要产生新的广告内容时便触发该事件。

● OnPreRender事件:通过查找文件数据或调用用户事件获取要呈现的广告信息。

AdvertisementFile属性不能和DataSource、DataMember或DataSourceID属性同时设置。换而言之,如果数据来源于一个广告文件,它就不能同时来源于数据源,反之亦然。

广告文件和AdvertisementFile属性是可选的。如果不使用广告文件,而是要以编程方式创建一个广告,则需要在AdCreated事件中输入代码以显示希望的元素。

AdRotator控件可以从XML文件中读取广告信息,也可以从数据库中读取广告信息。它需要通过自己的属性来定义一个广告体所需要的信息,但这些信息都是可选的,因此无论在XML文件中还是在数据库定义广告体,可以选用如下属性来作为广告体的信息。

● ImageUrl:要显示的图象的URL。

● NavigateUrl:单击AdRotator控件要转到的页面的URL。

● AlternateText:图象不可用时显示的文本。

● Keyword:可用语筛选特定广告的广告类别。

● Impressions:一个指示广告的可能显示频率的数值。

● Height:广告的高度。

● Width:广告的宽度。

创建XML文件时,开始标记<Advertisements>和结束标记</Advertisements>分别标记该文件开头和结尾。标记<Ad>和</Ad>用于划定一个广告的界限。所有广告都嵌套在开始和结束<Advertisements>标记之间。尽管某些数据元素是预定义的,如ImageUrl和NavigateUrl,但仍然可以在<Ad>标记之间放置自定义元素。AdRotator控件在分析该文件时将读取这些元素。然后将该信息传递给AdCreated事件。下面一段代码是XML文件的示例。

alt

上面的代码中第1行和第15行是一对<Advertisements>标记,所有的内容必须都包括在其内。其中第2行~第8行通过一对<Ad>标记定义一个广告的具体信息,包括广告的图形路径、单击时跳转的网址、替代图片不显示时的文字、过滤广告关键字和广告出现的频率,其中这些属性标记都是可选的。第9行~第11行以及第12行~第14行又分别定义了两个其他的广告信息,代码这里从略。

广告文件的位置可以是相对于网站的根目录,也可以是绝对路径。如果它的位置不在同一网站中,则要确保应用程序有权访问该文件,尤其在部署之后。正因为如此及其他的一些原因,最好把该文件放在Web根目录下。

【实例5-15】AdRotator控件的使用

本例利用AdRotator控件实现在页面中显示广告的功能。广告以图片形式呈现,如果用户单击该图片会进入显示广告具体信息的页面。

01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例5-14”。

02 在“实例5-15”中创建一个名为Default.aspx的窗体。

03 在“实例5-15”中创建一个Image文件夹,并放置两张网站的图片文件。

04 在“实例5-15”中创建一个XML文件XMLFile1.xml,在文件中编写如下代码:

alt

上面代码中第2行~第17行使用开始标记<Advertisements>和结束标记</Advertisements>定义两个广告信息文件内容。其中第3行和第9行是第一个广告。定义了广告的图片路径ImageUrl、链接的网址NavigateUrl、代替图片显示的文字AlternateText、显示的频率Impressions和筛选依据Keyword。第10行~第16行定义了第二个广告的信息,其结构与上一个相同。

05 单击网站的目录下的Default.aspx文件,进入“视图编辑”界面,打开“源视图”对话框,在编辑区中的<form></form>标记之间编写如下代码:

alt

上面的代码中第2行添加了一个服务器动态广告控件AdRotator1,设置其关联的XML文件和处理创建广告事件AdCreated_Event。

06 单击网站目录下的Default.aspx.cs文件;编写代码如下:

alt

上面的代码中第1行~第2行定义处理动态广告控件AdCreated1事件的方法。比较特别的是这个方法中不需要写任何的代码。

07 按快捷键Ctrl+F5运行程序,如图5-35所示。随机显示一个广告,如果刷新页面会出现如图5-36所示的另一个广告,随机出现的频率有XML文件中的属性设置决定。

alt

图5-35 运行效果1

alt

图5-36 运行效果2

当单击广告时,就会相应的跳转到如图5-37所示的显示广告具体信息的页面。

alt

图5-37 运行效果3

教程类别