软件开发-模板化的ASP NET控件简介-嘉为科技
ASP.NET数据绑定控件详解

数据绑定控件详解ListBox、GridView、Repeater这三个数据绑定控件的“⾼效分页”,ListBox和GridView内置的有分页,但是其效率太低了,少量的数据还可以,⼤量的数据根本就没法⽤,Repeater控件本⾝不提供分页,但是在实际的开发中可能也会有⽤到分页,所以也会给⼤家讲⼀下,Repeater的分页。
好了,现在开始进⼊正题,先从⽐较常⽤的控件说起。
⼀、GridView控件主要特点:⽀持删、改,排序、分页、外观设置、⾃定义显⽰数据缺点:影响程序性能、不⽀持插⼊操作这个控件可以以表格形式(table标签)显⽰、编辑和删除多种不同的数据源(例如、XML⽂件以及集合等)中的数据。
GridView控件功能⾮常强⼤,如果需要,编程者可以不⽤编写任何代码,通过VS 2008拖拽,并从属性⾯板设置属性即可,还可以完成如分页、排序、外观设置等功能。
虽然功能⾮常齐全,但程序性能将受到影响,在页⾯中最好不要过多地使⽤该控件。
当然,如果需要⾃定义格式显⽰各种数据,GridView控件也提供了⽤于编辑格式的模板功能,但是不⽀持数据的插⼊。
图⽰:⼆、ListView控件主要特点:提供了增、删、改、排序、分页等功能,还可以⽀持⽤户⾃定义模板缺点:影响程序性能、⼤数据分页效率低ListView控件会按照编程者编写的模板格式显⽰数据。
与DataList和Repeater控件相似,ListView控件也适⽤于任何具有重复结构的数据。
不过,ListView控件提供了⽤户编辑、插⼊和删除数据等数据操作功能,还提供了对数据进⾏排序和分页的功能,只需要在VS 2008中直接设置即可,不需要编写代码,这点⾮常类似于GridView控件。
可以说,ListView既有Repeater控件的开放式模板,⼜具有GridView控件的编辑特性。
ListView控件是3.5新增的控件,其分页功能需要配合DataPager 控件实现。
ASP.NET自定义控件开发示例(一)

ASP.NET⾃定义控件开发⽰例(⼀)本⽂通过实现⼀个服务端控件来讲解⼀下控件开发,该控件的功能如下:1.显⽰服务端时间,并不停更新 2.通过⼿动点击刷新按钮以AJAX获取服务端最新时间 3.能拖动 4.能记住在页⾯上的位置,页⾯回传后位置不变 5.能配置⼀个定时时间,⼀到这个时间,⾃动回传触发⽤户⾃定义的事件
⾸先新建⼀个类库项⽬HampWebControl,再新建⼀个类叫TipTime1,继承WebControl类。如果不是从已有控件中继承,⼀般就继承WebControl类,它是所有ASP.NET服务端控件的基类。
我们编译这个项⽬,再新建⼀个⽹站项⽬,引⽤HampWebControl项⽬,新建页⾯,在⼯具箱中拖⼀个TipTime1控件到页⾯上。我们运⾏该页⾯,就会发现HTML代码如下:就是说默认是呈现成⼀个span标签,可以通过重载WebControl基类的TagKey属性来改变。
这样呈现在页⾯上就是个DIV。 HtmlTextWriterTag是个枚举,包含了很多HTML标签。WebControl基类的Render⽤来呈现内容,重载它便可以往页⾯上呈现任何⾃定义的标签。
这样在页⾯上就显⽰了⼀个a标签,如下图所⽰:注意看,这时a标签是在DIV外⾯,如何将它放到DIV⾥⾯呢?这就要重载WebControl基类的RenderContents⽅法
这样这个a标签就在div⾥⾯了,如下图所⽰:接下来为最外围的DIV加⼀些样式,重载基类的AddAttributesToRender⽅法这⾥有两种写法,利⽤HtmlTextWriterStyle枚举或者直接写CSS属性名。到这⾥⼤家了解了⾃定义控件如何呈现在页⾯上。我们再新建⼀个类TipTime2,把依旧重载TagKey为DIV,然后重载RenderContents,显⽰⼀个span标签与⼀个input标签。
这样页⾯上显⽰了当前服务端的时间与⼀个按钮,如图所⽰: 接下来我们来让⽤户可以配置按钮上的⽂字,为类TipTime2增加⼀个Text属性:
第4章ASPnet常用控件

说明
ImageButton按钮所使用的图片的URL 按钮被单击时,该值来指定一个命令名称 按钮被单击时,将该值传递给Command事件 设置为False,则所提交作为参数的表单不被检验。 默认为True
3.应用范例
表4-9是按钮控件的应用实例,操作步骤如下: (1)在工具箱上拖拽标签图标Button、按钮图标Button至设计窗口; (2)双击按钮button1图标,输入如下代码:
属性 AutoPostBac k AutoComplet eType MaxLength ReadOnly
说明 指示在输入信息时,数据是否实时自动回发到 服务器 记忆客户端输入的内容类型 文本框中最多允许的字符数 指示能否更改 TextBox 控件的内容
Rows
Text TextMode
多行文本框中显示的行数
常用事件主要有
表 4-4 控件常用的事件
事
件
说
明
Page_Init
在进行页面初始化时触发的事件
Page_Load
Page_Unload 控件事件
当整个页面被浏览器读入时触发的事 件
当整个页面处理完成时触发的事件 当页面被浏览器加载时,使控件发挥 作用的事件
第4章 常用控件
(1)通过BulletedList控件的智能标签的
"配置数据源"选项与数据源绑定,显示数 据列表;
(2)通过Bulleted List控件的智能标签中
的"编辑项"选项,逐个添加项目; (3)在.aspx文件中利用<asp:ListItem>标 签中编写代码添加; (4)在程序执行过程中,通过程序代码动 态添加。
验证控件概 述 RequiredFiel dValidator 控 件
asp.net分页控件使用详解【附实例下载】

分页控件使⽤详解【附实例下载】本篇⽂章主要对创建事务的⽅法进⾏实例介绍,具有很好的参考价值,需要的朋友⼀起来看下吧⼀、说明AspNetPager.dll这个分页控件主要⽤于 webform⽹站,现将整理代码如下⼆、代码1、⾸先在测试页⾯Default.aspx页⾯添加引⽤<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>2、写⼀个Repeater列表控件⽤于显⽰数据1 2 3 4 5 6 7 8<asp:Repeater ID="rptNews"runat="server"> <ItemTemplate> <li> <span><%# Eval("time") %></span> <a href="NewsShow.aspx?id=<%# Eval("id") %>"><%# Access.GetStringNum( Eval("name").ToString(),15) %></a> </li> </ItemTemplate></asp:Repeater>3、添加1 2 3 4 5 6<webdiyer:AspNetPager ID="AspNetPager1"runat="server"AlwaysShow="True"CustomInfoStyle="FONT-SIZE: 12px" FirstPageText="⾸页"HorizontalAlign="Center"inputboxstyle="width:19px"LastPageText="尾页"meta:resourcekey="AspNetPager1"NextPageText="下⼀页"PageSize="10"PrevPageText="上⼀页"Style="font-size: 14px"Width="95%"CssClass="anpager"CurrentPageButtonClass="cpb"OnPageChanging="AspNetPager1_PageChanging"ShowBoxThreshold="10"></webdiyer:AspNetPager> PageSize属性是⽤于设置每页显⽰的数量4、后台代码绑定Access是测试数据库访问类,在最后的Demo中提供给⼤家5、分页控件点击页码事件1 2 3 4 5 6//分页protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e) { this.AspNetPager1.CurrentPageIndex = e.NewPageIndex; ShowNews();}最后奉上整页代码:Default.aspx12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %> <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""><html xmlns=""><head runat="server"><meta http-equiv="Content-Type"content="text/html; charset=utf-8"/><title>分页控件</title><link href="css/css.css"rel="stylesheet"type="text/css"/><style type="text/css">.aboutcontentnr{width:100%; height:auto; }</style></head><body><form id="form1"runat="server"><div><ul class="news"><asp:Repeater ID="rptNews"runat="server">17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <asp:Repeater ID="rptNews"runat="server"><ItemTemplate><li><span><%# Eval("time") %></span><a href="NewsShow.aspx?id=<%# Eval("id") %>"><%# Access.GetStringNum( Eval("name").ToString(),15) %></a></li> </ItemTemplate></asp:Repeater></ul><div class="paginator"><webdiyer:AspNetPager ID="AspNetPager1"runat="server"AlwaysShow="True"CustomInfoStyle="FONT-SIZE: 12px"FirstPageText="⾸页"HorizontalAlign="Center"inputboxstyle="width:19px"LastPageText="尾页"meta:resourcekey="AspNetPager1"NextPageText="下⼀页"PageSize="10"PrevPageText="上⼀页"Style="font-size: 14px"Width="95%"CssClass="anpager"CurrentPageButtonClass="cpb"OnPageChanging="AspNetPager1_PageChanging"ShowBoxThreshold="10"></webdiyer:AspNetPager></div></div></form></body></html>Default.aspx.cs 123 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;public partial class Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if(!IsPostBack){ShowNews();}}//测试数据源private void ShowNews(){String strSql = String.Format("select * from News order by time asc");DataTable dtbl = Access.ExecuteDataTable(strSql, null);this.rptNews.DataSource = Access.GetPageDataSource(AspNetPager1, AspNetPager1.CurrentPageIndex - 1, dtbl); this.rptNews.DataBind();}//分页点击页码事件protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e){this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;ShowNews();}}三、Demo以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持脚本之家!原⽂链接:/lengzhan/p/6054583.html。
ASPNET动态网站开发教程第6章 ASPNET常用服务器控件

Rows="整数,当为多行文本时的行数"
Columns="整数,当为多行文本时的列数"
2020年1月3日
第14页
6.2.2 TextBox(文本框)控件
Wrap="True | False,表示当控件内容超 过控件宽度时是否自动换行" AutoPostBack="True | False,表 示在文本修改以后,是否自动上传数据" OnTextChanged="当文字改变时触 发的事件过程" runat="server" />
2020年1月3日
第29页
6.2.9表格控件(Table)
表格控件(Table)来提供可编程的表格服 务器控件,表中的行可以通过TableRow控 件创建,而表中的列通过TableCell控件来 实现。
2020年1月3日
第30页
6.2.10 Literal控件和Panel控件
<asp:Panel id="控件名称"
ImageUrl="要显示图像的URL"
OnClick="事件过程名称"
runat="server" />
2020年1月3日
第18页
LinkButton(超链接按钮)控件
语法为:
<asp:linkbutton id="控件名称"
Text="按钮上的文字"
OnClick="事件过程名称"
2020年1月3日
第11页
6.2.5RadioButto 和 RadioButtonList 控件
ASPNET 2实用教程第五章 ASPNET控件

5.2.3 实例制作过程
5.添加一个Button按钮,ID为“Button3”,双击 “Button3”按钮,编辑Button3_Click事件,具体见 本节(五)中register.aspx.cs代码中的protected void Button3_Click(object sender, System.EventArgs e)部分。 完成后如下图所示:
第5章 控件
教学提示:Microsoft 为开发人员提供了一种适用于 Web开发、功能强大的控件工具,使开发人员能够在短时间内 开发出功能强大的Web应用程序。编程时只需将所选的控件从 工具箱拖放到页面上,通过Properties(属性)的设置即可方便、 快速地完成诸多功能。还可以通过创建自定义服务器 控件并封装大量可重复使用的用户界面特定代码,进一步提高 编程效率。
3.选中表的第一行,在“属性”对话框中将表的第一 行颜色设置为“#00099”,在表的第一行和第二行的
第二列输入“用户协议”等等文字。如下图:
5.2.3 实例制作过程
4.第三行第二列放两个Button控件,ID分别为 “Button1”和“Button2”分别将其“Text”属性设置为 “同意”与“不同意”。Button1按钮的功能是使得 “Panel1”区域消失,显示“Panel2”即“用户名检验”; 双击“Button1”按钮,编辑Button1_Click事件,代码 见本节(五)中register.aspx.cs代码中protected void Button1_Click(object sender, System.EventArgs e)部 分。
第5章 ASP .NET控件
5.1 控件的概述 5.2 注册实例制作 5.3 其它实用控件的运用
ASP.NETAJAX控件使用概述
AJAX控件使用概述一、 AJAX 控件概述借助 AJAX 控件,使用很少的客户端脚本或不使用客户端脚本就能创建丰富的客户端行为,如在异步回发过程中进行部分页更新(在回发时刷新网页的选定部分,而不是刷新整个网页)和显示更新进度。
异步部分页更新可避免整页回发的开销。
ScriptManager 控件为启用了 AJAX 的 网页管理客户端脚本。
ScriptManagerProxy 控件允许内容页和用户控件等嵌套组件在父元素中已定义了 ScriptManager 控件的情况下将脚本和服务引用添加到网页。
Timer 控件在定义的时间间隔执行回发。
如果将Timer 控件和UpdatePanel 控件结合在一起使用,可以按照定义的间隔启用部分页更新。
您还可以使用 Timer 控件来发布整个网页。
UpdatePanel 控件可用于生成功能丰富、以客户端为中心的Web 应用程序。
通过使用UpdatePanel 控件,可以执行部分页更新。
UpdateProgress 控件提供有关 UpdatePanel 控件中的部分页更新的状态信息。
所有 AJAX 控件都需要web.config 文件中的特定设置才能正常运行。
如果您试图使用这些控件之一,但您的网站不包含所需的 web.config 文件,则网页的“设计”视图中本应显示该控件之处会出现错误。
在“设计”视图中,如果您单击处于该状态的控件,则Microsoft Expression Web 会让您选择要新建一个 web.config 文件还是更新现有的 web.config 文件。
二、ScriptManager 控件ScriptManager 控件为启用了 AJAX 的 网页管理客户端脚本。
默认情况下,ScriptManager 控件会向网页注册Microsoft AJAX Library 的脚本。
这样,客户端脚本就能使用类型系统扩展插件,还能支持部分页呈现和 Web 服务调用之类的功能。
ASPNET控件篇
基础知识整理1 如何调用javascript脚本的方法 (2)1.1 直接在前台调用javascript函数 (2)1.2 在前台通过JS文件调用 (2)1.3 在后台调用javascript函数,函数在.js文件中 (2)1.4 用Response.Write()方法写入脚本 (3)1.5 用ClientScript类动态添加脚本 (3)2 Web服务器控件 (3)2.1 服务器控件与客户端控件的区别 (3)2.2 AutoPostBack (3)3 获取Master页面中的控件和属性 (3)3.1事件:LoadComplete (3)3.2 属性: (3)4 主题 (3)4.1:调用主题: (3)程序级:在配置文件的Web块中,添加pages指令<pages theme=”主题名”/> (3)4.2:删除主题 (3)4.3: 更换css (3)5 数组 (4)5.1: 数组复制 (4)6 WebConfig文件读取 (4)6.1 读节点 (4)7 怎样区分不同的get请求和post 请求 (4)7.1 get请求 (4)7.2 post请求 (4)8 Select标签的操作 (4)8.1 设定哪个选项被选中 (4)8.2 创建新的options对象 (4)8.3向select中增加Option (4)8.4 删除Option (4)8.5 一次性删除全部 (4)9 JS中window.parent、window.top、window.self代表的含义 (4)10 Framset和Frame各个参数的含义 (5)11 文件中的相当地址和绝对地址 (6)12 的<% %>总结 (6)1 如何调用javascript脚本的方法1.1 直接在前台调用javascript函数很简单,在head 元素之间加入script 元素,将type 元素设置为" text/javascript "如:<head runat="server"><script type="text /javascript" >function ShowName(str){alert("您的名字为:("+str+")");}</script><title>using javascript</title></head>之后在body 元素间,通过事件来访问如要通过button1 的单击事件(onclientclick)来访问javascript 函数示例如下:<asp:Button I D="Button1" runat="server"Text="Button" onclientclick="ShowName('XXX')" />这时运行项目,单击button时,会显示"您的名称为XXX"1.2 在前台通过JS文件调用方法与(1)一样只不过需要指定.js 文件示例如下:<head runat="server"><script type="text/javascript" src="JScript.js"></script><title>using javascript</title></head>之后在body 元素间,通过事件来访问如要通过button1 的单击事件(onclientclick)来访问javascript 函数示例如下://此时.js文件中必须有ShowName 方法<asp:Button I D="Button1" runat="server"Text="Button" onclientclick="ShowName('XXX')" />1.3 在后台调用javascript函数,函数在.js文件中前台的head 元素<head runat="server"><script type="text/javascript" src="JScript.js"></script><title>using javascript</title></head>后台的需要添加如下代码Button1.Attributes.Add("onclick", "showname1(XXX)");1.4 用Response.Write()方法写入脚本比如在你单击按钮后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上Response.Write("<script type='text/javascript'>alert();</script>");这个方法有个缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("<script type='text/javascript'>function myfun(){...}</script>");1.5 用ClientScript类动态添加脚本Eg: A Page.ClientScript.RegisterStartupScript(ClientScript.GetType(),键,脚本,是否添加脚本标记);B Page.ClientScript. RegisterClientScriptBlock (ClientScript.GetType(),键,脚本,是否添加脚本标记);区别:A 放在页面的底部B 放在页面的顶部2 Web服务器控件2.1 服务器控件与客户端控件的区别服务器控件能根据页面的输出动态的做出变化,而客户端控件是与特定的HMTL 元素关联2.2 AutoPostBack是否回发到服务器3 获取Master页面中的控件和属性控件:内容页面:3.1事件:LoadComplete代码:Master.FindControlo(“控件ID”) as 控件类型3.2 属性:在内容页面引入母版: <%@ MasterTypeVirtualPath="~/Eight/MasterPage.master" %>代码:Master.属性4 主题4.1:调用主题:页面级:在页面指令@page中添加Theme=”主题名”程序级:在配置文件的Web块中,添加pages指令<pages theme=”主题名”/>4.2:删除主题控件级:EnableTheming=false页面级:EnableTheming=false4.3: 更换css页面文件的头部:增加一个asp:PlaceHolder<asp:PlaceHolder runat="server" id="ph"></asp:PlaceHolder>后台代码:增加一个客户端的link控件,并设置相关属性HtmlGenericControl hgc = new HtmlGenericControl("link");hgc.Attributes["rel"] = "stylesheet";hgc.Attributes["type"] = "text/css";hgc.Attributes["href"] = 样式文件;ph.Controls.Add(hgc);5 数组5.1: 数组复制Array.Copy(原数组,新数组,原数组个数)6 WebConfig文件读取6.1 读节点string configPath = "~"; //表示根目录Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);PagesSection pages = (PagesSection)config.GetSection("system.web/pages");7 怎样区分不同的get请求和post 请求7.1 get请求Get请求通过url后面的参数名不同来区别7.2 post请求Post请求通过value值的不同来区别8 Select标签的操作8.1 设定哪个选项被选中select.options[i].selected=trueselect.selectedIndex = index;8.2 创建新的options对象new Option(text,value)new option(text,value,defaultSelected,selected)8.3向select中增加Optionselect.add(new Option(text,value))8.4 删除Optionselect.options.remove(index)8.5 一次性删除全部select.length = 0;9 JS中window.parent、window.top、window.self代表的含义在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口,opener是用open方法打开当前窗口的那个窗口。
asp控件技术与组件开发PPT课件
第五章 控件技术与组件开发
李华
信息检索
5.1 服务器控件
5.2 常用控件介绍
5.4其他控件的简介
5.3 数据验证控件
5.4 其他控件的简介
2/10/2021
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
李华
第五章 控件技术与组件开发
• 从技术上讲,模块分析ASPX文件的内容,并将文 件内容分解成单独的命令以建立代码的整体结构。完成此 工作后,模块将各命令放置到预定义的类定义中( 不需要放在一起,也不需要按编写顺序放置)。然后使用 这个类定义一个特殊的对象Page。
2/10/2021
2/10/2021
1.功能 TextBox控件又称文本框控件,用于输入并显示一行文字。
5.2 常用控件介绍
5.2.1 标签控件Label 5.2.2 文本框控件TextBox 5.2.3 Button控件 5.2.4 单选按钮控件RadioButton 5.2.5 复选框CheckBox 5.2.6 组框控件Panel 5.2.7 列表框ListBox控件 5.2.8 列表框CheckedBoxList控件
信息或用于说明某个控件的用途,其属性设置如图5—1所示。 2.属性 (1)ID属性 (2)Text属性 (3)Visible属性 3.Label控件实例 新建一个网站,默认主页为Default.aspx,在Default.aspx
ASP.NET开发技术
开发技术ASP全称为Active Server Pages(动态服务器主页),是微软开发的服务器端脚本语言,它是一种服务器中间件技术,取代了之前的CGI技术,成为一种被广泛利用的应用程序环境,可以利用VBscript或Java Script等脚本语言来设计,可以与数据库以及其他应用程序方便地进行交互,可以用来运行创建动态网站或Web应用程序,主要用于网络数据库的查询与管理,可以快速、简单、方便地用该程序编写动态网页,也可以添加文本、标记和各种组件等,很大地提高了网站开发人员在维护动态网站的工作效率。
动态服务器网页管理技术改变了之前静态管理的缺点,真正实现了可根据客户需求进行信息显示,避免了服务器重新连接内部服务器,对于海量信息管理的系统而言,极大的提高了网站管理的工作效率。
动态信息管理可以即时地调整每个信息显示界面的内容,包括图片、文字以及其他链接等,还可以对整个网页进行整体调整,这种技术极大地方便了浏览器用户和网站管理者之间的联系。
目前,ASP技术被广泛地应用于开发新闻网站、论坛、博客等网络应用系统。
1.ASP技术工作原理ASP (Active Server Pages)是动态服务器网页技术,ASP技术是用于链接用户与服务器的中间件技术,它可以使用第三方脚本语言,与Active X JScripting兼容,不需要再次编译就可以在服务器端执行。
当客户通过浏览器发出请求时,服务器会自动将ASP程序码解释为标准HTML (Hypertext Markup Language,超文本标志语言)格式的网页内容,再送到浏览者浏览器上显示出来,也可以将ASP 理解为一种特殊的CGI(Common Gateway Interface,共同网关接口)。
由于客户端不需要运行相应的脚本语言,整个运行过程对源程序实现完全封装,极大地保证了代码的安全性。
ASP通过后缀名为.ASP的文件来实现,一个ASP文件相当于一个可执行文件,必须放在Web服务器上有可执行权限的目录下,当浏览器向Web Server请求调用ASP文件时,就启动了ASP,这是服务器就开始相应客户端请求,在服务器通过ASP解释器解释相应的客户请求文件,在解释完成后向客户端返回信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
释放办公激情,效能触手可及
嘉为IT咨询培训
0
一、 模板化的ASP.NET控件
卜建新
什么是模板化的控件
ASP.NET 提供模板化控件功能,它允许将控件数据与其表示形式相分离,这样的控件公
开定义控件内容和布局等属性。控件在呈现期间把模板插入到适当位置。 ASP.NET 自带了
一些模板化控件,如常用到的数据控件:GridView、DataList、Repeater等都是模板化控
件。它们常用的模板有:ItemTemplate、FootTemplate、HeaderTemplate等等。
模板化的控件的简单实验
下面演示创建简单的具有MessageTemplate模板的自定义模板化控件的具体步骤。
1) 创建模板类:
该类必须继承INamingContainer 接口,因为在模板属性的内容是为子控件集合添加到
模板控件中,为保证控件具有唯一标识符.其实现将在CreateChildControls方法中创建子
控件。具体示例代码如下:
public class MessageContainer: WebControl, INamingContainer {
private int m_index;
private String m_message;
internal MessageContainer(int index, String message)
{
m_index = index;
m_message = message;
}
public int Index
{
get
{
return m_index;
}
}
public String Message
{
get
{
释放办公激情,效能触手可及
嘉为IT咨询培训
1
return m_message;
}
}
}
2) 创建自定义控件类TemplatedUC,并继承CompositeControl类:
a) 定义一个ITemplate接口成员:
private ITemplate messageTemplate = null;
b) 定义MessageTemplate模板属性:
[ TemplateContainer(typeof(MessageContainer)) ]
[ PersistenceMode(PersistenceMode.InnerProperty) ]
public ITemplate MessageTemplate
{
get
{
return messageTemplate;
}
set
{
messageTemplate = value;
}
}
c) 重载CreateChildControls()方法
protected override void CreateChildControls()
{
if (messageTemplate != null)
{
String[] fruits = {"apple", "orange", "banana", "pineapple" };
for (int i=0; i<4; i++)
{
MessageContainer container = new MessageContainer(i, fruits[i]);
messageTemplate.InstantiateIn(container);
this.Controls.Add(container);
}
}
}
3) 自定义模板控件的使用示例:
Index:
释放办公激情,效能触手可及
嘉为IT咨询培训
2
Message:
运行可以得到一下结果: