5.5 其他常用高级控件
前面章节中介绍的都是基本Web服务器控件,在编程的时候使用的也最多,下面介绍的是几个高级Web服务器控件,则部分控件可以更好地增强用户的体验,减少开发时间。
5.5.1 Calendar控件
Calendar控件实现一个传统的单月份日历,用户可以使用该日历查看和选择日期。Calendar控件可以完成如下的功能:
● 显示日历,该日历会显示月份,包括该月之前的一周和之后的一周,所以说,一共显示六周。
● 允许用户选择日、周、月。
● 允许用户选择一定范围内的日期。
● 允许用户移到下一月或上一月。
● 以编程的方式控制选定日期的显示。
● 自定义日历的外观。
Calendar控件的使用语法定义如下所示:
或
上述定义将在Web页面上生成一个显示当前月份的日历,如图5-31所示。无需手工编写代码,这个日历具有一些常见的功能。日历控件在页面上显示一个月的日历视图,使用两端的箭头可以逐月浏览。当选择某一日期时,该日期就在一个灰色的盒子里呈高亮显示,而且会引发页面回送。开发人员可以利用这个特点对日历控件编程。
图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任务”列表。
图5-32 “Calendar任务”列表
05 选择列表中“自动套用格式”命令,弹出如图5-33所示的“自动套用格式”对话框。选择左侧“选择架构”列表中的“专业型2”,在右侧的浏览窗口可以看到所选日历的外观格式的效果。最后,单击“确定”按钮。
图5-33 “自动套用格式”对话框
06 单击网站目录下的Default.aspx.cs文件,编写代码如下:
上面的代码中,第1行定义处理日历控件Calendar1选择改变事件SelectionChanged的方法。第3行~第5行获得选择日期的年、月、日。第5行~第14行使用switch-case语句判断用户选择的日期是星期几。第15行在标签控件Label1上显示用户在日历中所选择的日期。
第17行定义处理日历Calendar1控件呈现日时激发事件DayRender的方法。第18行判断日期如果是周末,第19行设置该日期显示的背景颜色,第20行添加显示的文字,第21行设置该日期不可被选。
07 按快捷键Ctrl+F5运行程序,如图5-34所示。
图5-34 运行结果
5.5.2 AdRotator控件
AdRotator服务器控件用于在Web窗体中显示一些广告的内容。广告或公司标志是网站顶部最常见的元素,AdRotator控件提供了一种在页面上显示广告的简便方法,该控件能够显示图形图像,当用户单击广告时,会将用户导向指定的URL,并且该控件能够从数据源中自动读取广告信息。
AdRotator控件显示广告的方式有如下三种:
● 随机显示广告。
● 对广告设置优先级别以使某些广告有更多显示频率。
● 编写循环逻辑来显示广告。
AdRotator控件可以从如下各种形式的数据源中读取数据:
● XML文件。
● 数据库。
自定义逻辑,为AdCreated事件创建一个处理程序,并在该事件中选择一条广告。AdRotator控件定义的格式代码如下所示:
或
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文件的示例。
上面的代码中第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,在文件中编写如下代码:
上面代码中第2行~第17行使用开始标记<Advertisements>和结束标记</Advertisements>定义两个广告信息文件内容。其中第3行和第9行是第一个广告。定义了广告的图片路径ImageUrl、链接的网址NavigateUrl、代替图片显示的文字AlternateText、显示的频率Impressions和筛选依据Keyword。第10行~第16行定义了第二个广告的信息,其结构与上一个相同。
05 单击网站的目录下的Default.aspx文件,进入“视图编辑”界面,打开“源视图”对话框,在编辑区中的<form></form>标记之间编写如下代码:
上面的代码中第2行添加了一个服务器动态广告控件AdRotator1,设置其关联的XML文件和处理创建广告事件AdCreated_Event。
06 单击网站目录下的Default.aspx.cs文件;编写代码如下:
上面的代码中第1行~第2行定义处理动态广告控件AdCreated1事件的方法。比较特别的是这个方法中不需要写任何的代码。
07 按快捷键Ctrl+F5运行程序,如图5-35所示。随机显示一个广告,如果刷新页面会出现如图5-36所示的另一个广告,随机出现的频率有XML文件中的属性设置决定。
图5-35 运行效果1
图5-36 运行效果2
当单击广告时,就会相应的跳转到如图5-37所示的显示广告具体信息的页面。
图5-37 运行效果3
共有条评论 网友评论