《用户控件和自定义控件.pptx》由会员分享,可在线阅读,更多相关《用户控件和自定义控件.pptx(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、ACCP V4.0第九章第九章用户控件和自定义控件ACCP V4.0回顾q在.NET 中,Web 窗体 DataGrid 控件派生自类System.Web.UI.WebControls.DataGridq使用 DataSource 和 DataMember 属性可将 DataGrid 绑定到数据源qTemplateColumn 允许指定在列中出现的控件TemplateColumn 的页眉、页脚、项目和编辑项目等 4 项定义了模板列的内容和外观q可使用 Select、Edit、Update、Cancel 和 Delete 等 ButtonColumns 来选择、更新和删除 DataGrid 中的
2、记录q对 DataGrid 进行分页使用户能按页显示指定数量的记录qDataGrid 的“属性生成器”对话框定义了用于自定义 DataGrid 的页眉、页脚、列、分页及各种其他设置2ACCP V4.0目标q明确创建自定义控件的必要性q使用 ASP.NET 创建简单的控件q使用 C#创建复合控件3ACCP V4.0用户控件和自定义控件之间的差别 q用.ascx 文件表示q不出现在工具箱中q支持缓存q提供有限的支持q用.DLL 文件表示q出现在工具箱中q不支持缓存q提供全面支持用户控件自定义控件.ascx文件.DLL 文件4ACCP V4.0创建用户控件 4-1用户控件 用户控件ASP.NET页面
3、页面用户控件不能独立存在和使用,它要求将 ASP.NET 页面作为容器5ACCP V4.0创建用户控件 4-2q在 VS.NET 中创建用户控件:q创建一个 ASP.NET Web 应用程序项目 UserControlDemo q移动到“项目”菜单,选择“添加 Web 用户控件”,命名为Head.ascxq在Head.ascx上添加控件q新建一个Web窗体,命名为TestUserControl.aspx,在解决方案资源管理器里把Head.ascx控件拖放到TestUserControl.aspx页面的涉及视图里q编译并在浏览器里浏览TestUserControl.aspx6ACCP V4.0创
4、建用户控件 4-3可以象普通的ASP.NET页面一样,在用户控件上放置Web控件 关于我们 最新动态 ACCP BENET BTEST 7ACCP V4.0创建用户控件 4-4在Web页中使用自定义控件,把自定义控件拖放到Web页面即可 WebForm1 测试用户控件 运行结果8ACCP V4.0使用 C#创建自定义控件q建立自定义控件步骤q在 VS.NET 的“新建项目”选项中,在模板列表中选择“Web 控件库”模板选项,把项目命名为CustomerControls。Visual Studio.NET 将创建包含单一自定义控件的代码的项目 q添加一个新项,在模板里选择自定义控件,命名为Ult
5、raTextBox。移至“生成”选项,单击“生成 Repeater.cs”将 Repeater.cs 编译成.dll 文件,以便可以用于.aspx 页面中q在由设计器生成的代码模板 UltraTextBox.cs 中编写代码using System;using System.Web.UI;using System.Web.UI.WebControls;using System.ComponentModel;namespace CustomerControls DefaultProperty(Text),ToolboxData()public class UltraTextBox:System.
6、Web.UI.WebControls.TextBox string _validString=;Bindable(true),Category(Appearance),DefaultValue()public UltraTextBox()/关联加载控件时要执行的代码 this.Load+=new EventHandler(UltraTextBox_Load);/被允许的字符组成的字符串属性 public string ValidString get return _validString;set _validString=value;/控件加载时要执行的代码 private void Ultr
7、aTextBox_Load(object sender,EventArgs e)/设定文本框输入文本时要调用的Javascript函数 this.Attributes.Add(onkeypress,return CheckInput(+ValidString+););/得到文本框所在的页面对象 System.Web.UI.Page page=this.Page;/如果Javascript函数已经被注册到页面,则返回 if(page.IsStartupScriptRegistered(UltraTextBoxScript)return;/注册Javascript函数 string scriptS
8、tring=;scriptString+=n!-+n;scriptString+=function CheckInput(validString);scriptString+=;scriptString+=for(var i=0;i n;scriptString+=n;page.RegisterStartupScript(UltraTextBoxScript,scriptString);9ACCP V4.0把自定义控件添加到工具箱10ACCP V4.0使用自定义控件-1续续q在 VS.NET 中创建用户控件:q新建一个Web工程,命名为TestCustomerControl,用来测试Ultra
9、TextBox控件q在TestCustomerControl工程添加一个页面,命名为TestUltraText.aspxq添加控件 WebForm1 11ACCP V4.0使用自定义控件-2q程序运行只能输入数字只能输入字母WebForm1!-function CheckInput(validString)for(var i=0;i 浏览器产生的Javascript12ACCP V4.0复合控件 2-1复合控件13ACCP V4.0复合控件 2-2Composite.csusing System;using System.Web;using System.Web.UI;using System
10、.Web.UI.WebControls;namespace CompositeControl public class Composite:Control,INamingContainer public int Val get this.EnsureChildControls();return Int32.Parse(TextBox)Controls1).Text);如果在一个页面上放置多个控件实例,就需要这样做 该属性设置和返回在复合控件的文本框中包含的值 set this.EnsureChildControls();(TextBox)Controls1).Text=value.ToStri
11、ng();protected override void CreateChildControls()this.Controls.Add(new LiteralControl(“值:);TextBox box=new TextBox();box.Text=0;this.Controls.Add(box);this.Controls.Add(new LiteralControl();复合控件 与前面已创建的任何其他自定义控件一样,在 aspx 页面上可以使用这个控件应写入 Codebehind 文件中的代码 输出结果 private void btnIncrement_Click(Object s
12、ender,EventArgs e)Composite1.Val=Composite1.Val+1;private void btnDecrement_Click(Object sender,EventArgs e)Composite1.Val=Composite1.Val-1;14ACCP V4.0总结q使用用户控件和自定义控件可以实现界面的重用q用户控件的扩展名是.ascx,该控件可在一个应用程序中使用,但不能跨应用程序q自定义控件被编译成.dll 文件,可以放置在工具箱里,它可以是继承于已有的Web控件,也可以是完全自定义。自定义控件可以跨应用程序域q复合自定义控件将一个或多个服务器或 HTML 控件组合在一个 Control 类中,该类可与其他控件类一起编译,以创建一个程序集15