自定义控件的构建(12)
生活随笔
收集整理的這篇文章主要介紹了
自定义控件的构建(12)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Share
前面講了模板的構建,我們忽略了一個細節,如果接觸ASP.NET時間不長的話,一般都會看到數據表達式是<%#Eval(‘Name’)%>這種形式的,
那么我們為什么用<%#Container.Name%>這種形式呢,其實前者是ASP.NET控件所支持的一種簡化寫法,如果在自定義控件中支持簡化寫法,
需要實現IDataItemContainer接口 ,該接口包含3個需要實現的屬性
DataItem:返回數據項的值
DataItemIndex:返回數據項在數據源中的索引
DisplayIndex:返回數據項在控件中的索引 那么創建數據綁定控件時實現IDataItemContainer可以將數據庫表中每條記錄封裝到實現這個控件的對象中,這樣就實現了簡化的數據表達式引用了 看個簡單的例子: 先聲明一個非數據綁定控件 /// <summary> /// 簡單綁定 /// </summary> public class SingleBindingsControl:CompositeControl { private ITemplate _itemplete; private Items _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; } } [TemplateContainer(typeof(Items))] [PersistenceMode(PersistenceMode.InnerProperty)] public ITemplate ItemTemplete { get { return _itemplete; } set { _itemplete = value; } } protected override void CreateChildControls() { _item = new Items(); _itemplete.InstantiateIn(_item); this.Controls.Add(_item); } } 這里聲明的SingleBindingsControl控件通過一個ItemTempleate關聯到Items類,在CreateChildControls()中, ItemTempleate實例化到Items類中。 Items的實現 public class Items : WebControl, IDataItemContainer { public string Name { get; set; } public decimal Price { get; set; } public object DataItem { get { return this; } } public int DataItemIndex { get { return 0; } } public int DisplayIndex { get { return 0; } } } Items類實現了IDataItemContainer類,簡單的實現其中的內容而已 看看其使用,很熟悉的方式 <custom:SingleBindingsControl ID="SingleBindings1" runat="server"> <ItemTemplete> <%#Eval("Name") %> <%#Eval("Price","{0:c}") %> </ItemTemplete> </custom:SingleBindingsControl> </div> 添加一數據 this.SingleBindings1.Name = "Hello ,asp.net"; this.SingleBindings1.Price = 123.12M; this.DataBind(); OK,一直用Eval()的朋友知道Eval的是怎么出來的了吧。。。 ? ? ? ?本文參《ASP.NET 3.5揭秘》
轉載于:https://www.cnblogs.com/626498301/archive/2010/08/11/1797047.html
總結
以上是生活随笔為你收集整理的自定义控件的构建(12)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【摘录】BREW应用的c++实现注意点
- 下一篇: 获取主机的信息