asp.net模板控件示例
模板控件允许将控件数据与其表示形式相分离,模板化控件不提供用户界面。
编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类,MSDN是这样解释的。
下面是一个简单的示例:
1:建立一个自定义模板控件 MyTemplateControl.ascx
2:为建立的模板控件定义一个ITemplate类型的属性
3:为 ITemplate 定义一个NamingContainer类
4:应用TemplateContainer至ITemplate类型的属性上 。
5:初始化模板数据,把 模板加至模板容器中。
6:测试模板控件,绑定数据。
示例代码:
MyTemplateControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyTemplateControl.ascx.cs" Inherits="FrameworkWebStudy.MyTemplateControl" %><asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
只定义了一个容器。用于包含模板控件数据。
private ITemplate template = null; [TemplateContainer(typeof(ContentContainer))] [PersistenceMode(PersistenceMode.InnerProperty)] public ITemplate ContentTemplate { get { return template; } set { template = value; } }
模板容器,必须实现INamingContainer接口,这仅只是一个标记接口,
任何实现该接口的控件都创建一个新的命名空间,在这个新的命名空间中,
所有子控件 ID 在应用程序内是唯一的。
public class ContentContainer : Control, INamingContainer { private string m_content; public ContentContainer(string content) { m_content = content; } public string Content { get { return m_content; } } }
初始化一些测试数据,添加至控件的Page_Init方法中
void Page_Init() { if (template != null) { string[] content = { "henry", "yunyun", "onlyone", "onely" }; for (int i = ; i < content.GetUpperBound(); i++) { ContentContainer container = new ContentContainer(content[i]); template.InstantiateIn(container); PlaceHolder1.Controls.Add(container); } } }
应用示例:
<form id="form1" runat="server"> <div> <uc1:MyTemplateControl ID="MyTemplateControl1" runat="server"> <ContentTemplate> Content:<asp:Label ID="lblContent" runat="server" Text='<%# Container.Content %>'></asp:Label> </ContentTemplate> </uc1:MyTemplateControl> </div></form>
绑定数据:
Page.DataBind();
运行结果:
asp.net模板控件示例的更多相关文章
- 浅谈ASP.NET报表控件
OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口. 接着找到了ComponentOne的Web chart ...
- (转)浅谈ASP.NET报表控件
项目中有报表图形化的需求, 于是开始在网上找第三方chart控件.因时间紧迫,大至确定了几个候选:一.Office带的OWC控件:二.ComponentOne:三.Web Chart.本文将讲解ASP ...
- ASP.NET自定义控件组件开发 第五章 模板控件开发
原文:ASP.NET自定义控件组件开发 第五章 模板控件开发 第五章 模板控件开发 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接 ...
- ASP.Net 验证控件 RequiredFieldValidator
使用 ASP.NET 验证控件可在网页上检查用户输入.有用于各种不同类型验证的控件,例如范围检查或模式匹配验证控件.每个验证控件都引用网页上其他位置的输入控件(服务器控件).当处理用户输入时(例如,当 ...
- 浅析五大ASP.NET数据控件
转自:http://kb.cnblogs.com/page/69207/ 摘要:ASP.NET中有不少的控件,在这当中有一部分是用来处理数据的控件.在这里我们正要讨论的就是ASP.NET数据控件,希望 ...
- ASP.NET数据绑定控件简介
•数据绑定分为数据源和数据绑定控件两部分(①数据绑定控件通过数据源获取和修改数据②数据绑定控件通过数据源隔离数据提供者和数据使用者)数据绑定控件→数据源→数据库•数据源:SqlDataSource(连 ...
- [摘]ASP.Net标准控件(TextBox控件)
TextBox控件 TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属 性 说 ...
- asp.net Login控件基本属性及事件说明
原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径. Login系列控件包含下列控件: Login 登录控件 ...
- FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!
FineUIMvc v1.4.0 已经于 2017-06-30 发布,FineUIMvc 是基于 jQuery 的专业 ASP.NET MVC 控件库,是我们的新产品.由于和 FineUI(专业版)共 ...
随机推荐
- hdu4352(数位dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 题意:求区间L到R之间的数A满足A的的数位的最长递增序列的长度为K的数的个数. 分析:数位dp, ...
- zoj3747(递推dp)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5170 题意:给n个士兵排队,每个士兵三种G.R.P可选,求至少有m个 ...
- HTML5之画布的拖拽/拖放
<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> func ...
- Java PreparedStatement
PreparedStatement是一个用于运行sql语句的标准接口的对象.它是继承与Statement.依据里氏代换原则.用Statement运行的语句,一定能够用Prepared替换了.那么他们之 ...
- ural1018(树形dp)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17662 题意:给一棵边有权值的二叉树,节点编号为1-n,1是根节点 ...
- Android利用Get、Post 获取网络数据
首先是Get: 布局非常easy.就一个button,主要看一下MainActivity吧: package com.francis.httpget; import android.app.Activ ...
- 用Tomcat和Eclipse开发Servlet程序
1. 安装eclipse 1). 在官网上直接下载Eclipse IDE for Java EE Developers,解压即可: 2. eclipse安装tomcat插件: 1). 在http:// ...
- Resource temporarily unavailable用户的连接数设置的太小
-bash:fork:Resource temporarily unavailable的问题 出现这个问题的原因是linux用户的连接数设置的太小,只要修改max user processes就可 ...
- windows phone 页面传值(7)
原文:windows phone 页面传值(7) 在windows phone 中微软为我们提供了页面间传递参数的解决方案,下面就为大家介绍使用方法,页面传值的案例中我们建立两个页面,一个是MainP ...
- Android分屏显示LogCat
Eclipse里有非常多界面组件,文件列表.编辑区.类结构等等,在这么多界面组件里,再打开一个Logcat就基本没有什么空间了.与其挤在一起还不如分开成两个窗体. 或者你有两个屏幕,想一个屏幕编辑,一 ...