自定义控件(可以动态加载用户控件)
2008-03-08 12:54:28 来源:WEB开发网核心提示:自定义控件中动态加载用户控件 自己写个自定义控件,如<MyControls:Containers id="myc" runat="server"><ITEMPLATE><MyControls:MidArea runat="server&qu
自定义控件中动态加载用户控件 自己写个自定义控件,如
<MyControls:Containers id="myc" runat="server">
<ITEMPLATE>
<MyControls:MidArea runat="server">
</MyControls:MidArea>
</ITEMPLATE>
</MyControls:Containers>
要想每次使用Containers时就自动有页眉和页脚,一种方法就是在在做Containers的时候自己在里面加Html元素。但是这中方法麻烦,也不轻易便于以后的修改。所以就把页眉和页脚分别做成两个用户控件:Header.ascx,Footer.ascx。这样再在Containers里动态加载他们。
Containers的代码:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.sessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebComponents
{
/// <summary>
/// Containers自定义控件
/// </summary>
[ParseChildren(true)]//可以创建子控件
public class Containers : Control,INamingContainer
{
public Containers()
{
} PRivate ITemplate itemTemPlate;
[TemplateContainer(typeof(Containers))]
public ITemplate ItemPlate//项模板
{
get{return itemTemPlate;}
set{itemTemPlate=value;}
} protected override void CreateChildControls()
{
this.Controls.Clear();
Control Header=Page.LoadControl("Header.ascx");//动态加载Header.ascx,也可判定何时加载
Controls.Add(Header);
Control Footer=Page.LoadControl("Footer.ascx");
Controls.Add(Footer);
}
}
}这样你在Header.ascx,Footer.ascx里设置好内容就可以使用。当然也可以缓存起来
<MyControls:Containers id="myc" runat="server">
<ITEMPLATE>
<MyControls:MidArea runat="server">
</MyControls:MidArea>
</ITEMPLATE>
</MyControls:Containers>
要想每次使用Containers时就自动有页眉和页脚,一种方法就是在在做Containers的时候自己在里面加Html元素。但是这中方法麻烦,也不轻易便于以后的修改。所以就把页眉和页脚分别做成两个用户控件:Header.ascx,Footer.ascx。这样再在Containers里动态加载他们。
Containers的代码:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.sessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebComponents
{
/// <summary>
/// Containers自定义控件
/// </summary>
[ParseChildren(true)]//可以创建子控件
public class Containers : Control,INamingContainer
{
public Containers()
{
} PRivate ITemplate itemTemPlate;
[TemplateContainer(typeof(Containers))]
public ITemplate ItemPlate//项模板
{
get{return itemTemPlate;}
set{itemTemPlate=value;}
} protected override void CreateChildControls()
{
this.Controls.Clear();
Control Header=Page.LoadControl("Header.ascx");//动态加载Header.ascx,也可判定何时加载
Controls.Add(Header);
Control Footer=Page.LoadControl("Footer.ascx");
Controls.Add(Footer);
}
}
}这样你在Header.ascx,Footer.ascx里设置好内容就可以使用。当然也可以缓存起来
- ››控件一:Gallery 之无限循环的问题
- ››控件一:Gallery 之基础用法
- ››定义名称时自动代码提示所需的后缀
- ››可以窃取iPad用户密码的应用
- ››可以直接越狱翻墙的Android手机版Opera Mini 5浏览...
- ››可以替代系统记事本的程序
- ››可以左右移动多选下拉列表的javaScipt(可以兼容IE...
- ››定义防御TCP SYN拒绝服务攻击的策略
- ››可以用的RAID 6:HighPoint RocketRAID 3220评测
- ››可以给QQ好友发送消息 MSN消息中转机器人发布
- ››定义列表+CSS制作的垂直菜单
- ››可以实现故障预防 探测和恢复的MAA结构
更多精彩
赞助商链接