80 likes | 311 Views
第 14 章 用 户 控 件. 1 什么是用户控件 2 创建用户控件的方法 3 使用用户控件 4 定义用户控件属性 5 定义用户控件事件 6 代码分析 7 将 Web 窗体页转换为用户控件. 14.1 什么是用户控件. 用户控件 (User Control) 是一种自定义的组合控件,当多个网页中包括有部分相同的用户界面时,可以将这些相同的部分提取出来,做成用户控件。 用户控件与网页之间还是存在着一些区别:
E N D
第14章 用 户 控 件 • 1 什么是用户控件 • 2 创建用户控件的方法 • 3 使用用户控件 • 4 定义用户控件属性 • 5 定义用户控件事件 • 6 代码分析 • 7 将Web窗体页转换为用户控件
14.1 什么是用户控件 • 用户控件(User Control)是一种自定义的组合控件,当多个网页中包括有部分相同的用户界面时,可以将这些相同的部分提取出来,做成用户控件。 • 用户控件与网页之间还是存在着一些区别: • 用户控件文件的扩展名为 .ascx而不是.aspx;代码的分离(隐藏)文件的扩展名是.ascx.cs而不是.aspx.cs; • 在用户控件中不能包含 <HTML>、<BODY>和<FORM>等HTML语言的标记; • 用户控件可以单独编译,但不能单独运行。只有将用户控件嵌入到.aspx文件中时,才能和ASP.NET网页一起运行。
14.2 创建用户控件的方法 • 下面结合一个示例来讲述创建用户控件的过程。 创建显示一个栏目新闻标题列表的用户控件。 • 创建用户控件的步骤如下所述。 • (1)先创建一个网站。 • (2)右击网站中某个目录,选择【添加新项】,并在打开的对话框中选择【Web用户控件】,然后确定用户控件的名称,再单击【打开】按钮。 • (3)从【工具箱】中将控件添加到Web用户控件中。其中凡是希望用服务器编程方式访问的控件都必须是服务器端控件。 • (4)为各控件设置属性或编写事件代码。 • (5)给用户控件进行编译。方法是先选择用户控件名,然后选择【生成】|【生成页】命令以便完成编译工作。
14.3 使用用户控件 • 多个网页中可以使用相同的用户控件,而每一个网页可以使用多种不同的用户控件。 • 在设计阶段,有的用户控件并不会充分展开,而是被压缩成小长方形,此时它只起占位的作用。程序运行时才会自动展开。
14.4 定义用户控件属性 • 通过为用户控件添加属性,显示不同栏目新闻记录。 • 定义步骤: • 将HiddenField控件拖到用户控件上,选择GridView的“配置数据源”选项,进行重新配置。 • 单击WHERE按钮,选择列名为ColunmID,运算符为“=”,选择Control源和控件ID为HiddenField1。 • 在后台代码(.cs文件)中写入如下代码: public string CateID { set { HiddenField1.Value = value; } }
14.5 定义用户控件事件 • 用户控件也可以定义自己的事件。 • 例子功能:单击一个按钮后,在TextBox控件下方出现日期控件,选择日期后,日期控件隐藏并将所选日期显示在TextBox控件上。 • 步骤: • 首先添加用户控件,并加入TextBox、Button、Calendar控件,设置Calendar的Visible属性为false。 • 双击Button按钮,在单击事件中写入如下代码: protected void Button1_Click(object sender, EventArgs e) { Calendar1.Visible = true; //单击该按钮时显示日期控件 } • 双击日期控件,并在其事件中写入如下代码: protected void Calendar1_SelectionChanged(object sender, EventArgs e) { //将选择的值赋值给TextBox TextBox1.Text = Calendar1.SelectedDate.ToShortDateString(); Calendar1.Visible = false;// 隐藏日期控件 }
14.6 代码分析 进入ASP.NET的【源】视图,可以看见用户控件的相关代码。其中语句: <%@ Register TagPrefix="uc1" TagName="WebUserControl1" Src="WebUserControl1.ascx" %> 代表用户控件已经在.aspx中注册。 语句中各个标记的含义如下: TagPrefix:代表用户控件的命名空间(这里是ucl),它是用户控件名称的前缀。如果在一个.aspx网页中使用了多个用户控件,而且在不同的用户控件中出现了控件重名的现象时,命名空间是用来区别它们的标志。 TagName:是用户控件的名称,它与命名空间一起来惟一标识用户控件,如代码中的“uc1:WebUserControl1”。 Src:用来指明用户控件的虚拟路径。
14.7 将Web窗体页转换为用户控件 • 做一些较小的改动即能将Web窗体改变成为用户控件。 • 转换的具体步骤如下: • 在代码(隐藏)文件中将类的基类从 Page更改为UserControl类。例如:在Web窗体页中,类Welcome从Page类继承。语句如下: public class welcome : System.Web.UI.Page{…} 现在改为从UserControl类继承。语句如下: public class welcome : System.Web.UI.UserControl{…} • 在.aspx 文件中删除所有<html>、<head>、<body> 和 <form>等标记。 • 将ASP.NET指令类型从@ Page 更改为 @ Control。 • 更改Codebehind属性来引用控件的代码(隐藏)文件(ascx .cs)。 • 将.aspx 文件的扩展名(后缀)更改为 .ascx。