ASP.NET控件开发基础(16)
http://tech.ddvip.com 2007年09月02日 社区交流
内容摘要:ASP.NET控件开发基础
然后在主控件中如下实现
private ProductItem _item;
public string Name
{
get
{
EnsureChildControls();
return _item.Name;
}
set
{
EnsureChildControls();
_item.Name = value;
}
}
public Decimal Price
{
get
{
EnsureChildControls();
return _item.Price;
}
set
{
EnsureChildControls();
_item.Price = value;
}
}
(2)用TemplateContainer与模板属性关联起来
[TemplateContainer(typeof(ProductItem))]
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate ItemTemplate
{
get { return _itemTemplate; }
set { _itemTemplate = value; }
}
(3)重写CreateChildControls方法
注意了,此处模板的InstantiateIn方法不再是this了,而是自定义容器控件了,再用数据绑定表达式访问的将是ProductItem的数据(即自定义容器控件的数据)
protected override void CreateChildControls()
{
_item = new ProductItem();
_itemTemplate.InstantiateIn(_item);
Controls.Add(_item);
}
(4)页面代码
void Page_Load()
{
Product1.Name = "Laptop Computer";
Product1.Price = 1254.12m;
Product1.DataBind();
}
<custom:Product
id="Product1"
Runat="Server">
<ItemTemplate>
Name: <%# Eval("Name") %>
<br />
Price: <%# Eval("Price", "{0:c}") %>
</ItemTemplate>
</custom:Product>
上面以Eval来绑定数据,也可以用Container表达式,如下图,其类型为ProductItem

注意:当不是数据绑定控件时,则不能用Eval绑定语法,如上面的几个例子.大家可以测试一下.
好了本次该讲的我想也讲完了,以上代码多为asp.net2.0揭密的例子
本来上面代码完全可以在一个控件中实现的,但我把其分开来讨论,这样理解的更加深刻.上面都是模板控件基础.将为以后实现复杂效果打下基础.本次未涉及到数据绑定,下次我们继续讨论.希望对你有帮助,错误之处还请提出.
责编:豆豆技术应用
- asp.net 视频教程
- asp.net 数据库编程
- asp.net 入门教程
- ado.net 教程
- asp.net 基础讲座
- asp.net ajax 教程
- asp.net ajax 入门系列
- asp.net 控件开发基础
- asp.net 2.0 服务器控件
- asp.net 2.0 教程
- asp.net 控件开发
- asp.net 类
- asp.net 分页
- asp.net 页面缓存
- asp.net 常见问题解决
- asp.net 2.0 母版页
- asp.net SQL Server
- asp.net 错误
- asp.net 事件
- asp.net 组件
- asp.net 性能
- asp.net 文件上传
- 更多asp.net专题……