Mega Code Archive

 
Categories / ASP.Net Tutorial / Custom Controls
 

File

using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace myControls {     public class Product : CompositeControl     {         private ITemplate _itemTemplate;         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;             }         }         [TemplateContainer(typeof(ProductItem))]         [PersistenceMode(PersistenceMode.InnerProperty)]         public ITemplate ItemTemplate         {             get { return _itemTemplate; }             set { _itemTemplate = value; }         }         protected override void CreateChildControls()         {             _item = new ProductItem();             _itemTemplate.InstantiateIn(_item);             Controls.Add(_item);         }     }     public class ProductItem : WebControl, IDataItemContainer     {         private string _name;         private decimal _price;         public string Name         {             get { return _name; }             set { _name = value; }         }         public decimal Price         {             get { return _price; }             set { _price = value; }         }         public object DataItem         {             get             {                 return this;             }         }         public int DataItemIndex         {             get { return 0; }         }         public int DisplayIndex         {             get { return 0; }         }     } } File: Default.aspx <%@ Page Language="C#" %> <%@ Register TagPrefix="custom" Namespace="myControls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">     void Page_Load()     {         Product1.Name = "Laptop Computer";         Product1.Price = 1254.12m;         Product1.DataBind();     } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">     <title>Show Product</title> </head> <body>     <form id="form1" runat="server">     <div>     <custom:Product         id="Product1"         Runat="Server">         <ItemTemplate>         Name: <%# Eval("Name") %>         <br />         Price: <%# Eval("Price", "{0:c}") %>         </ItemTemplate>     </custom:Product>     </div>     </form> </body> </html>