1、第第10章章 高级应用高级应用10.1 验证控件验证控件10.2 用用JavaScript处理页面和服务器控件处理页面和服务器控件10.3 用户控件用户控件10.4 XML的应用的应用10.5 Web Service10.6 ASP.NET配置配置10.7 性能优化性能优化10.8 程序调试与异常处理程序调试与异常处理10.9 ASP.NET AJAX10.1 验证控件验证控件ASP.NET的6个验证控件列于表10.1中。控件名控件名功功 能能CompareValidator将输入控件的值同常数值或其他输入控件的值相比较,以确定这两个值是否与由比较运算符(小于、等于、大于等)指定的关系相匹配。
2、RangeValidator检查用户的输入是否在一个特定的范围内。RegularExpressionValidator检查用户的输入是否与正则表达式所定义的模式匹配。RequiredFieldValidator检查用户是否在输入控件中输入了数据。CustomValidator通过用户自定义函数判定输入的数据是否有效。ValidationSummary显示页面上所有验证控件所搜索到的验证错误。10.1 验证控件验证控件这6个控件各有其特定的功能,具有各自的属性,但它们都具有一些共同的属性,表10.2列出了它们共有的主要属性。属属 性性说说 明明ControlToValidate指定需要验证的控件
3、名。Display指定验证控件的显示方式。可取下列值之一:None验证控件的内容不再控件位置上显示,而在 ValidationSummary 控件中显示错误信息。Static无论验证结果如何,验证控件的内容总要占据页面空间。Dynamic如果验证失败,验证控件显示错误信息。而当验证无错误时,验证控件内容不占据页面空间。EnableClientScript指示是否启用客户端验证。通过将 EnableClientScript 属性设置为 false,可在支持此功能的浏览器上禁用客户端验证。Enabled指示是否启用验证控件。默认为True(启用)。ErrorMessage当验证失败时在 Valid
4、ationSummary 控件中显示的错误信息。ForeColor指定当验证失败时用于显示内联消息的颜色。IsValid返回 ControlToValidate 属性所指定的输入控件是否通过验证,通过为True,不通过为False。该属性只能在编程时使用。Text若设置该属性,则验证失败时会在验证控件中显示Text属性定义的消息。如果未设置此属性,则在控件中显示ErrorMessage属性中指定的文本。SetFocusOnError将页面的焦点放置在产生错误的控件,让用户更容易地修订输入。如果页面上有多个验证控件,并且多个验证控件报告验证失败,则页面上第一个失败的验证控件接收焦点。10.1.1
5、 客户端验证和服务端验证客户端验证和服务端验证对于验证中的事件序列,有两种情况:若客户端支持JScript且验证控件的EnableClientScript=true,则在客户端和服务器上执行验证。如果上面两个条件的任何一个不满足,则只在服务器上执行验证。10.1.2 RequiredFieldValidator控件控件RequiredFieldValidator控件的语法:10.1.2 RequiredFieldValidator控件控件【例例10.1】RequiredFieldValidator验证控件示例。网页启动后显示如图10.1所示的数据输入界面,若在“用户名”和“密码”框中不输入字符
6、,则给出相应的验证出错提示,如图10.2所示。10.1.2 RequiredFieldValidator控件控件设计步骤如下:(1)新建一个网站“WebSite10”,在此网站中添加一个Web窗体页“Ex10-1.aspx”。(2)在“源”视图下,在DIV标记中添加如下代码:请输入用户名和密码:(3)在此页面中添加2个TextBox、2个RequiredFieldValidator和1个Button控件,控件的属性设置如表10.3所示。控件类别控件类别ID其他属性其他属性其他属性值其他属性值说明说明TextBoxUserNameText输入用户名用于输入 用户名Pass用于输入 密码Requi
7、redFieldValidatorRequiredFieldValidator1ErrorMessage、ControlToValidate、InitiaValue您必须填写用户名、UserName、输入用户名检测是否 输入用户名RequiredFieldValidator2ErrorMessage、ControlToValidate您必须填写密码、Pass检测是否 输入密码ButtonButton1Text确定提交数据10.1.2 RequiredFieldValidator控件控件在“源”视图下,生成的主要代码如下:姓名:输入用户名 密码:10.1.3 CompareValidator控件
8、控件CompareValidator控件的语法:10.1.3 CompareValidator控件控件CompareValidator控件特有的属性有以下4个:ValueToCompare属性:获取或设置用来比较的常量。ControlToCompare属性:获取或设置与ControlToValidate属性所指定的控件进行比较的控件的标识。注意:通常不同时设置ControlToCompare属性和ValueToCompare属性;如果同时设置了这两个属性,则ControlToCompare属性优先。Type属性:获取或设置用来比较的数据的类型(货币、日期、双精度浮点型、整型、字符串),默认为S
9、tring。在进行比较之前,用户输入的数据将先被转换为指定的类型。Operator属性:获取或设置比较运算符(等于、不等于、大于、大于等于、小于、小于等于、数据类型检查),默认值为Equal。10.1.3 CompareValidator控件控件表10.4列出了可能的比较操作。操操 作作说说 明明Equal 所验证的输入控件的值与其他控件的值或常数值之间的相等比较。NotEqual 所验证的输入控件的值与其他控件的值或常数值之间的不相等比较。GreaterThan 所验证的输入控件的值与其他控件的值或常数值之间的大于比较。GreaterThanEqual 所验证的输入控件的值与其他控件的值或常
10、数值之间的大于或等于比较。LessThan 所验证的输入控件的值与其他控件的值或常数值之间的小于比较。LessThanEqual 所验证的输入控件的值与其他控件的值或常数值之间的小于或等于比较。DataTypeCheck 输入到所验证的输入控件的值与BaseCompareValidator.Type 属性指定的数据类型之间的数据类型比较。如果无法将该值转换为指定的数据类型,则验证失败。使用此运算符时,将忽略ControlToCompare和ValueToCompare属性。10.1.3 CompareValidator控件控件【例例10.2】CompareValidator验证控件示例。网页启
11、动后显示如图10.3所示的数据输入界面;若在“年龄”框中输入200,在“工资收入”或“稿费等收入”中输入大于“总收入”框中值时,则给出相应的验证出错提示,如图10.4所示。10.1.3 CompareValidator控件控件设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-2.aspx”。(2)在“源”视图下,在DIV标记中添加如下代码:请输入如下信息(3)在页面中添加5个TextBox、3个CompareValidator和1个Button控件。10.1.3 CompareValidator控件控件在“源”视图下,生成的主要代码如下:用户名:输入用户名年龄:总
12、收入:工资收入:稿费等收入:10.1.4 RangeValidator控件控件RangeValidator控件的语法:RangeValidator控件特有的属性有以下2个:MinimumValue属性和MaximumValue属性:分别指定有效范围的最小值和最大值。Type属性:用于指定要比较的值的数据类型,其含义与CompareValidator控件的Type属性相同。10.1.4 RangeValidator控件控件【例例10.3】RangeValidator验证控件示例。网页启动后显示如图10.5所示的数据输入界面;若在文本框中输入“-10”,则给出相应的验证出错提示,如图10.6所示。
13、10.1.4 RangeValidator控件控件设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-3.aspx”。(2)在“源”视图下,在DIV标记中添加如下代码:请输入如下信息(3)在页面中添加一个TextBox控件、一个RangeValidator控件和一个Button控件。TextBox控件的ID设置为“mark”;RangeValidator控件的ControlToValidate、ErrorMessage、MaximumValue、MinimumValue和Type分别设置为“mark”、“成绩必须在0100之间”、“100”、“0”和“Integer
14、”;Button控件的Text属性设置为“确定”。在“源”视图下,生成的主要代码如下:请输入成绩:10.1.5 RegularExpressionValidator控件控件RegularExpressionValidator控件的语法:10.1.5 RegularExpressionValidator控件控件ValidationExpression属性值指定输入格式时可使用的格式符列于表10.5中。格式符号格式符号含含 义义.表示可接受除空格以外的任何字符。常和、等格式符号结合使用。表示只能接受其中指定的字符。例如,a-z表示可接受小写英文字母;0-z表示可接受数字09和小写英文字母;abc表
15、示可接受a,b,c这三个英文字母。指定需输入的字符个数。例如,3表示必须输入3个字符;3,6表示必须输入36个字符;3,表示必须至少输入3个字符,再多不限。表示“除以外的字符”。例如,0-9表示可接受除09之外的所有字符。|表示“或”。例如,a-z3|A-Z3表示必须输入3个小写英文字母或者3个大写英文字母(二者必居其一,而不能是3个大小写字母混写)。+表示至少要有一个符合的字符,相当于1,。例如,a-z+表示必须至少输入一个小写英文字母。*表示可有0个或多个符合的字符,相当于0,。(?:)用于判断用户输入是否符合其括号中指定的符号串,常与“|”格式符合结合使用。例如,(?Green|Blac
16、k|Milk)Tea表示当用户输入GreenTea、BlackTea或MilkTea时都接受。转义符,用于指定输入字符必须为格式符号的情况。例如,(0-9)表示必须输入用小括号括起的数字,如(8)。10.1.5 RegularExpressionValidator控件控件【例例10.4】RegularExpressionValidator验证控件示例。结合RequiredFieldValidator控件,要求用户必须输入数据才能进入对输入数据格式的验证。网页启动后,若用户未在文本框中输入任何数据,则显示如图10.7所示的验证提示页面。10.1.5 RegularExpressionValida
17、tor控件控件若在文本框中输入不符合规则的数据,则给出相应的验证出错提示,如图10.8所示。10.1.5 RegularExpressionValidator控件控件设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-4.aspx”。(2)在“源”视图下,在DIV标记中添加如下代码:请输入如下信息(3)在页面中添加2个TextBox控件、2个RequiredFieldValidator验证控件、2个RegularExpressionValidator验证控件和1个Button控件。10.1.5 RegularExpressionValidator控件控件在“源”视图
18、下,生成的主要代码如下:请输入电话号码:asp:RegularExpressionValidator ID=RegularExpressionValidator1 runat=server ControlToValidate=telephone ErrorMessage=电话号码必须是812个数字 请输入电子邮件地址:10.1.6 CustomValidator控件控件CustomValidator控件的语法:CustomValidator控件特有的属性有以下2个:ClientValidationFunction:获取或设置用于验证的函数,该函数必须是客户端自定义函数。该函数在表单数据被提交到
19、服务器之前在浏览器中执行。OnServerValidate:是一个服务器事件,当CustomValidator控件被执行时将触发该事件。它指定在服务器上执行的函数或过程,数据被提交到服务器后才进行验证。10.1.6 CustomValidator控件控件【例例10.5】CustomValidator控件示例。网页启动后显示如图10.9所示的数据输入界面,要求输入能被5整除的整数;若在文本框中输入78,则给出相应的验证出错提示,如图10.10所示。本例使用OnServerValidate属性指定在服务器上执行的验证处理过程。10.1.6 CustomValidator控件控件设计步骤如下:(1)
20、在网站WebSite10中添加一个Web窗体页面“Ex10-5.aspx”。(2)在“源”视图下,在DIV标记中添加如下代码:请输入如下信息(3)在页面中添加一个TextBox控件、一个CustomValidator控件和一个Button控件。TextBox控件的ID设置为“num”;CustomValidator控件的ControlToValidate设置为“num”,ErrorMessage设置为“您输入的数不能被5整除”;Button控件的Text属性设置为“确定”。(4)添加CustomValidator控件的ServerValidate事件处理程序,代码如下:Protected Su
21、b CustomValidator1_ServerValidate(ByVal source As Object,ByVal args _As System.Web.UI.WebControls.ServerValidateEventArgs)Handles CustomValidator1.ServerValidate args.IsValid=(args.Value Mod 5)=0)End Sub10.1.6 CustomValidator控件控件在“源”视图下,生成的主要代码如下:请输入一个能被5整除的整数:10.1.7 ValidationSummary控件控件ValidationS
22、ummary控件的语法:ValidationSummary控件的主要属性如下:DisplayMode:获取或设置ValidationSummary控件的显示格式,其取值见表10.6。取取 值值说说 明明BulletList显示在项目符号列表中的验证摘要。此为默认值。List显示在列表中的验证摘要。SingleParagraph显示在单个段落内的验证摘要。10.1.7 ValidationSummary控件控件HeaderText:获取或设置ValidationSummary控件的标题。ShowSummary:获取或设置是否在网页上显示验证摘要。默认为True。ShowMessageBox:获取
23、或设置是否已对话框形式来显示验证错误信息,默认为False。EnableClientScript:获取或设置ValidationSummary控件是否启用客户端脚本来更新自己的状态,默认为True。10.1.7 ValidationSummary控件控件【例例10.6】ValidationSummary控件示例。网页启动后显示如图10.11所示的数据输入界面,若输入未通过验证,则给出相应的验证出错提示,如图10.12所示。10.1.7 ValidationSummary控件控件设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-6.aspx”。(2)在“源”视图下,
24、在DIV标记中添加如下代码:请输入如下信息(3)在页面中添加3个TextBox、1个RequiredFieldValidator、1个CompareValidator、1个RangeValidator、1个ValidationSummary和一个Button控件。3个TextBox控件的ID分别设置为“num”、“Pass1”、“Pass2”和“Age”。10.1.7 ValidationSummary控件控件在“源”视图下,生成的主要代码如下:姓名:密码:再输入一次密码:年龄:10.1.8 关闭客户端验证功能关闭客户端验证功能关闭客户端验证功能有两种方式:(1)用编程方式删除验证控件的客户端
25、验证功能,例如在Page_load事件中关闭页面上所有验证控件的客户端脚本功能,如果要动态地确定不允许进行客户端验证,使用此方法比较好。如下列代码所示:Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.Load Dim Validator As BaseValidator For Each Validator In Page.Validators Validator.EnableClientScript=False Next End Sub 10.1.8 关闭客户端验证功能
26、关闭客户端验证功能(2)设置验证服务器控件的EnableClientScript属性为Flase,从而阻止控件发送在客户机上执行验证的JavaScript函数,使验证检查在服务器上进行。该属性默认为True。此属性的用法如下:10.2 用用JavaScript处理页面和服务器控件处理页面和服务器控件v10.2.1 在控件上直接应用在控件上直接应用JavaScript把JavaScript直接应用于ASP.NET页面上的控件。例如,下列代码中的TextBox服务器控件上显示了当前的日期和时间。Protected Sub Page_Load(ByVal sender As Object,ByVal
27、 e As System.EventArgs)Handles Me.LoadTextBox1.Text=DateTime.Now.ToString()End Sub10.2.1 在控件上直接应用在控件上直接应用JavaScript如果希望该时间对于浏览站点的任何人来说都是正确的,无论他们在世界的哪个角落,就可以使用JavaScript处理TextBox控件,代码如下:10.2.2 使用使用Page.ClientScript属性属性1.使用使用Page.ClientScript.RegisterClientScriptBlockRegisterClientScriptBlock方法可以把Java
28、Script函数放在页面的顶部。也就是说,该脚本用于在浏览器中启动页面。其用法如下列代码所示。Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Dim myScript As String=function AlertHello()alert(Hello ASP.NET);Page.ClientScript.RegisterClientScriptBlock(Me.GetType(),MyScript,myScript,True)End Sub注册JavaScript 10.2.2 使用使用Pa
29、ge.ClientScript属性属性RegisterClientScriptBlock方法的两个构建方式如下:RegisterClientScriptBlock(type,key,script)RegisterClientScriptBlock(type,key,script,script tag specification)把类型指定为Me.GetType(),还指定了键、要包含的脚本,然后是一个设置为True的Boolean值,这样.NET就自动把脚本放在ASP.NET页面上的标记中。在运行页面时,可以查看页面的源代码,代码所示。10.2.2 使用使用Page.ClientScript属
30、性属性2.使用使用Page.ClientScript.RegisterStartupScriptRegisterStartupScript方法与RegisterClientScriptBlock方法的区别不大。最大的区别是RegisterStartupScript把脚本放在ASP.NET页面的底部,而不是顶部。实际上,RegisterStartup Script方法甚至使用与RegisterClientScriptBlock方法相同的构造函数:RegisterStartupScript(type,key,script)RegisterStartupScript(type,key,script,
31、script tag specification)这两种方法在页面上注册脚本的过程有很大的区别:如果在页面上有一些处理控件的JavaScript,在大多数情况下应使用RegisterStartupScript方法,而不是RegisterClientScriptBlock方法。例如,应使用下面的代码创建一个包含控件的页面,该控件包含默认值Hello ASP.NET:Hello ASP.NET10.2.2 使用使用Page.ClientScript属性属性然后使用RegisterClientScriptBlock方法把脚本放在页面上,利用TextBox1控件中的值,如下列代码所示:Protecte
32、d Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.Load Dim myScript As String=alert(document.forms0TextBox1.value);Page.ClientScript.RegisterClientScriptBlock(Me.GetType(),MyScript,myScript,True)End Sub运行这个页面,会产生一个JavaScript错误,出错的原因是JavaScript函数在文本框放置在屏幕之前触发。所以,JavaScript
33、函数没有找到TextBox1,导致页面抛出一个错误。现在试用RegisterStartupScript方法,代码如下:Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.Load Dim myScript As String=alert(document.forms0TextBox1.value);Page.ClientScript.RegisterStartupScript(Me.GetType(),MyScript,myScript,True)End Sub10.2.2
34、使用使用Page.ClientScript属性属性3.使用使用Page.ClientScript.RegisterClientScriptInclude许多开发人员都把JavaScript放在.js文件中,这是最好的方式,因为很容易把对JavaScript的修改应用于整个应用程序。使用RegisterClientScriptInclude方法可以在ASP.NET页面上注册脚本文件,如下列代码所示:使用RegisterClientScriptInclude方法:string myScript=myJavaScriptCode.jsPage.ClientScript.RegisterClientS
35、criptInclude(myKey,myScript);这会在ASP.NET页面上创建如下代码:10.2.2 使用使用Page.ClientScript属性属性【例例10.7】使用Page.ClientScript.RegisterClientScriptInclude方法处理页面和服务器控件,如图10.13所示,当单击Button按钮控件后弹出对话框,显示TextBox控件的内容。10.2.2 使用使用Page.ClientScript属性属性设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-7.aspx”。(2)在此页面中添加一个Button控件和一个Tex
36、tBox控件,Button的onclientclick属性设置为“AlertHello()”,TextBox控件的Text设置为“Hello,ASP.NET”。(3)在解决方案资源管理器中右击网站名“WebSite10”,选择“添加新项”,在弹出的“添加新项”对话框中选择“JScript文件”模板,并命名为“myJavaScriptCode.js”。(4)在myJavaScriptCode.js文件中添加如下代码:function AlertHello()alert(document.forms0TextBox1.value);10.3 用户控件用户控件v10.3.1 创建用户控件创建用户控件
37、创建用户控件的方法与设计ASP.NET网页类似,只要放入所需的数据或控件,以及相应的程序代码即可。以下是一个创建用户控件的示例: | | | 将以上代码存入文件menu.ascx。10.3.2 将用户控件添加到将用户控件添加到ASP.NET网页网页注册用户控件的语法:上述指令包含以下三个属性:TagPrefix:设置用户控件的标记前缀,该前缀类似于Web控件的Asp前缀。例如,若注册用户控件的标记前缀为ucl,则在引用该用户控件的ASP.NET网页中就以“ucl:”来引用该用户控件,就象使用“Asp:”引用Web用户控件一样。TagName:设置用户控件
38、的名称。Src:设置用户控件文件的路径。10.3.2 将用户控件添加到将用户控件添加到ASP.NET网页网页将用户控件加入到ASP.NET网页的语法:【例例10.8】用户控件示例。将menu.ascx用户控件加入到ASP.NET网页,网页启动后显示如图10.14所示的界面。10.3.2 将用户控件添加到将用户控件添加到ASP.NET网页网页设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-8.aspx”。(2)在资源管理器中选中“menu.ascx”文件并将其拖放到Ex10-8.aspx页面中。打开“源”视图,源程序如下:10.4 XML的应用的应用v10.4.1
39、 读取读取XML文档文档【例例10.9】读取XML文档示例。将例1.10所创建的person.xml文档的内容读入到DataSet中,并用GridView控件显示出来,如图10.15所示。10.4.1 读取读取XML文档文档设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-9.aspx”,并在此页面中添加一个GridView控件。(2)在网站WebSite10中添加一个XML文件,XML文件内容见例1.10所示,命名为“person.xml”。(3)在“源”视图下,在DIV标记中添加如下代码:人员信息表10.4.1 读取读取XML文档文档(4)切换到“设计”视图下
40、,双击页面空白处,添加命名空间和Page的Load事件处理程序。命名空间如下:Imports System.DataPage的Load事件处理代码如下:Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.Load Dim DS As New DataSet()创建DataSet对象 DS.ReadXml(Server.MapPath(person.xml)读取XML文档 GridView1.DataSource=DS.Tables(0).DefaultView GridVie
41、w1.DataBind()End Sub10.4.2 写入写入XML文档文档【例例10.10】写入XML文档示例。把XSCJ.mdf数据库的XS表的数据保存到一个名为xs.xml的XML文档中,同时在DataGrid中显示该表所有数据,如图10.16所示。10.4.2 写入写入XML文档文档设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页面“Ex10-10.aspx”,并在此页面中添加一个GridView控件。(2)在网站WebSite10中添加一个XML文件,命名为“XS.xml”。(3)在“源”视图下,在DIV标记中添加如下代码:学生信息表(4)切换到“设计”视图下,双击
42、页面空白处,添加命名空间和Page的Load事件处理程序。命名空间如下:Imports System.DataImports System.Data.SqlClient10.4.2 写入写入XML文档文档Page的Load事件处理代码如下:源程序如下:Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.LoadDim connstr As Stringconnstr=Data Source=.SQLEXPRESS;Initial Catalog=XSCJ;Integrated
43、 Security=True;Pooling=FalseDim DTAdpt As SqlDataAdapter=New SqlDataAdapter(Select*from XS,connstr)Dim DS As DataSet=New DataSet()创建DataSet对象DTAdpt.Fill(DS,XS)调用WriteXml方法将DS中的数据写入当前目录的XS.xml文件DS.WriteXml(Server.MapPath(XS.xml)GridView1.DataSource=DSGridView1.DataMember=XSGridView1.DataBind()End Sub
44、使用记事本打开XS.xml文件,内容显示。10.4.3 基于基于XML的新闻系统的新闻系统1.XML文件设计文件设计新闻系统中使用两类XML文件,一类是存储新闻的XML文件,每条新闻存储于一个XML文件中;另一类是新闻索引文件,存储所有新闻的索引信息。新闻索引文件名定义为“index.xml”,每条新闻的文件名由新闻发布时管理员输入。(1)index文件结构index.xml的示例如下:测试新闻 content.aspx?id=test 10.4.3 基于基于XML的新闻系统的新闻系统(2)新闻存储文件结构下面是一个新闻存储文件示例,文件名为“test.xml”:测试新闻 admin 2010
45、-3-10 欢迎访问本站!这是一则测试新闻 10.4.3 基于基于XML的新闻系统的新闻系统2.新闻发布新闻发布新闻发布界面如图10.17所示。当填写了各个文本框的内容并点击“发布”按钮后,数据将被修改和保存,并返回如图10.18所示的页面。10.4.3 基于基于XML的新闻系统的新闻系统设计步骤如下:(1)在网站WebSite10中添加一个Web窗体页“distribute.aspx”。(2)在“源”视图下,在DIV标记中添加如下代码:新闻发布系统(3)在页面中添加4个TextBox和1个Button控件,4个TextBox控件的ID分别为“title”、“author”、“filename
46、”和“content”,ID为content的TextMode设置为“MultiLine”;Button控件的Text设置为“发布”。(4)在代码页中添加命名空间和Button控件的Click事件处理程序。命名空间如下:Imports System.XmlImports SystemImports System.IOButton控件的Click事件处理程序的代码。10.4.3 基于基于XML的新闻系统的新闻系统3.新闻浏览新闻浏览新闻浏览界面如图10.19所示。10.4.3 基于基于XML的新闻系统的新闻系统(1)viewnews.htm:框架网页文件。它将浏览器显示区划分为左右两个区域,左边
47、区域将由title.aspx程序列出各新闻标题,右边区域将由content.aspx程序显示所选定的新闻信息。viewnews.html文件内容如下:10.4.3 基于基于XML的新闻系统的新闻系统(2)title.aspx:读取index.xml文件中的新闻索引记录,用GridView控件显示每条新闻的标题,并设置到相应新闻的超链接。页面title.aspx的设置方法如下:在此页面的“源”视图下,在DIV中添加如下代码:新闻列表 在此页面中添加一个GridView控件。将其ID设置为“newsDataGrid”,GridView的AutoGenerateColumns、HorizontalA
48、lign、BackColor、Font-Bold、Font-Size和ForeColor属性分别设置为“False”、“Center”、“#990000”、“True”、“Small”和“#FFFFCC”。10.4.3 基于基于XML的新闻系统的新闻系统不选中“自动生成字段”复选框,如图10.20所示。10.4.3 基于基于XML的新闻系统的新闻系统 添加如下命名空间:Imports System.Data 添加Page的Load事件处理程序,代码如下:Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventA
49、rgs)Handles Me.Load Dim DS As New DataSet()创建DataSet对象 DS.ReadXml(Server.MapPath(index.xml)读取索引文件XML文档 newsDataGrid.DataSource=DS.Tables(0).DefaultView newsDataGrid.DataBind()End Sub10.4.3 基于基于XML的新闻系统的新闻系统(3)content.aspx:根据传入的id(即存储新闻的XML文件名),读取相应新闻存储的XML文件,用DataList显示该新闻的标题、作者、发布日期和内容。页面content.as
50、px的设置方法如下:在此页面中添加一个DataList控件,ID设置为“newsDL”,BorderColor、BorderWidth、CellPadding、GridLines和Width 分别设置为“Red”、“1px”、“10”、“Horizontal”和“500px”。在“源”视图下,在DataList中添加如下代码:你所查看的新闻信息 新闻标题:作者:发布日期:新闻内容:10.4.3 基于基于XML的新闻系统的新闻系统 添加如下命名空间:Imports System.Data 添加Page的Load的事件处理程序,代码如下:Protected Sub Page_Load(ByVal