asp.net模板控件示例
原文: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 = 0; i < content.GetUpperBound(0); 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();

运行结果:

posted on 2014-03-12 19:14 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3597021.html

asp.net模板控件示例相关推荐

  1. Asp.Net就业课堂之模板控件

    模板控件 ASP.NET 提供了三个控件,使得在 ASP.NET Web 页面中显示数据绝对比传统 ASP 所需的迭代方式简单得多. 这三个控件是 DataGrid.DataList 和 Repeat ...

  2. [导入]Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]...

    Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载] 文章来源:http://blog.csdn.net/chengking/archive/2007/0 ...

  3. 探讨微软ASP.NET AJAX控件开发技术(服务器端)

    一.简介 到目前为止,我们已经讨论了开发Ajax控件所涉及的客户端相关技术.现在,让我们来讨论此过程中与服务器端相关的一些技术. 需要说明的是,在[客户端]篇中我们的举例本质上仅是使用ASP.NET ...

  4. 事件冒泡控件示例(转载)

    .NET Framework 开发员指南   事件冒泡 ASP.NET 页框架提供一种称为"事件冒泡"的技术,允许子控件将事件沿其包容层次结构向上传播.事件冒泡允许在控件层次结构中 ...

  5. repeater控件 php,asp.net Repeater控件的说明及详细介绍及使用方法

    Repeater 控件不具备内置的呈现功能,这表示用户必须通过创建模板为 Repeater 控件提供布局.当该页运行时,Repeater 控件依次通过数据源中的记录为每个记录呈现一个项. 他很简单,用 ...

  6. asp.net Login控件基本属性及事件说明

    原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径. Login系列控件包含下列控件: Login 登录控件 ...

  7. 一起谈.NET技术,浅析五大ASP.NET数据控件

    ASP.NET数据控件综述: 1. 前3个(GridView 控件,DetailsView 控件,FormView 控件)用于呈现多条记录,后面2个(Repeater 控件,DataList 控件)用 ...

  8. ASP.NET-----Repeater数据控件的用法总结(转)

    ASP.NET-----Repeater数据控件的用法总结(转) 一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data ...

  9. ASP.NET GridView控件常用功能

    ASP.NET GridView控件常用功能 一.分页显示 二.排序数据 三.实现全选和不全选 四.对数据进行编辑操作 五.删除数据 六.高亮显示鼠标所在行 七.设置数据显示格式 八.单击控件某行按钮 ...

最新文章

  1. 【CV】Python下载安装及环境变量配置教程
  2. idea 2019安装完(打不开启动不了)问题解决(最全解决方法)
  3. 净利2.3万的香飘飘,还能做奶茶届的ZARA吗?
  4. LUA和C#关于字符串中\0的处理
  5. python q切换指定目录_Python小工具:3秒钟将视频转换为音频
  6. HTML5下划线是一个常见的问题
  7. ant design样式不生效官方解决方案
  8. Java空指针异常:java.lang.NullPointException
  9. 提升效率!技术宅、学生党必备!大学四年使用的几十个高效工具都在这里了
  10. 一个英文字母,一个中文各占多少字节?
  11. 三种碎片化方法:RECAP, BRICS与eMolFrag
  12. 红蜘蛛显示器测试软件,红蜘蛛5使用displayCAL校准显示器(蓝绿蜘蛛5通用)
  13. eigen求特征值和特征向量
  14. 图标、图片、矢量图注册,通过名称来配置icon可以提高性能
  15. AM4379芯片的GPIO接口点灯LED
  16. AppInventor之数据库、MQTT及导出Excel表格
  17. React兼容IE8
  18. 凌动智行就相关问题发布股东信
  19. 病毒:注册表的认识以及用c语言编写一个“百分之一熊猫烧香“
  20. 视听说教程(第三版)4 quiz 6

热门文章

  1. 8102年底如何开发和维护一个npm项目
  2. Maven打包时抛出should not point at files within the project directory …异常
  3. Redis事务和分布式锁
  4. 9、MySQL逻辑架构介绍
  5. 路由协议管理距离汇总
  6. jQuery 1.4版本的15个新功能(现在已经发布到jquery1.8,特别是增强版的live事件,支持 submit , change , focus 和 blur 事件)...
  7. 一个汉字在数据库占几个字节
  8. UVa 120 - Stacks of Flapjacks
  9. 【转】glTexImage2D()和gluBuild2DMipmaps() [将载入的位图文件(*.bmp)转换成纹理贴图]+glTexParameteri()纹理过滤函数...
  10. 数据结构与算法笔记(三) 线性表(链式描述) 链表