//----自己写的
//--调用
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Cover1.Html = "111";
Cover1.DataBind();
}
}
<uc1:Cover id="Cover1" runat="server" >
<ItemTemplate>
<%#Container.Html%>
</ItemTemplate>
</uc1:Cover>
//--
//---控件
namespace NoteOnlineWeb.Controls
{
[ParseChildren(true)]
public partial class Cover : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
private String mHtml = null;
private ITemplate itemPlate;
[TemplateContainer(typeof(CTemplate))]//指定当前控件类型
public ITemplate ItemTemplate
{
get { return itemPlate; }
set { itemPlate = value; }
}
public String Html
{
get
{
return mHtml;
}
set
{
mHtml = value;
}
}
protected override void OnDataBinding(EventArgs e)
{
this.EnsureChildControls();//确定是否包含子控件,否则创建
base.OnDataBinding(e);
}
CTemplate myTemplateContainer;
protected override void CreateChildControls()
{
if (itemPlate != null)
{
myTemplateContainer = new CTemplate(this);
itemPlate.InstantiateIn(myTemplateContainer);//当由类实现时,创建子控件对象
Controls.Add(myTemplateContainer);//这里就是把你写的模版放在那里如果你有一个控件叫aaa那就可以写成aaa.Controls.Add(myTemplateContainer)
}
}
}
public class CTemplate : Control, INamingContainer
{
private Cover parent;
public CTemplate(Cover parent)
{
this.parent = parent;
}
public String Html
{
get
{
return parent.Html;
}
}
}
}
//--
//---