Mega Code Archive

 
Categories / ASP.Net Tutorial / Custom Controls
 

Creating Templated Databound Controls

File: DivView.cs using System; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace MyNamespace {     public class DivView : CompositeDataBoundControl     {         private ITemplate _itemTemplate;         [TemplateContainer(typeof(DivViewItem))]         [PersistenceMode(PersistenceMode.InnerProperty)]         public ITemplate ItemTemplate         {             get { return _itemTemplate; }             set { _itemTemplate = value; }         }         protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding)         {             int counter = 0;             foreach (object dataItem in dataSource)             {                 DivViewItem contentItem = new DivViewItem(dataItem, counter);                 _itemTemplate.InstantiateIn(contentItem);                 Controls.Add(contentItem);                 counter++;             }             DataBind(false);             return counter;         }         protected override HtmlTextWriterTag TagKey         {             get             {                 return HtmlTextWriterTag.Div;             }         }     }     public class DivViewItem : WebControl, IDataItemContainer     {         private object _dataItem;         private int _index;         public object DataItem         {             get { return _dataItem; }         }         public int DataItemIndex         {             get { return _index; }         }         public int DisplayIndex         {             get { return _index; }         }         protected override HtmlTextWriterTag TagKey         {             get             {                 return HtmlTextWriterTag.Div;             }         }         public DivViewItem(object dataItem, int index)         {             _dataItem = dataItem;             _index = index;         }     } } File: Default.aspx <%@ Page Language="C#" %> <%@ Register TagPrefix="custom" Namespace="MyNamespace" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">     <style type="text/css">         .products         {             width:500px;         }         .products div         {             border:solid 1px black;             padding:10px;             margin:10px;         }     </style>     <title>Show DivView</title> </head> <body>     <form id="form1" runat="server">     <div>     <custom:DivView         id="lstProducts"         DataSourceID="srcProducts"         CssClass="products"         Runat="Server">         <ItemTemplate>         <h1><%# Eval("Title") %></h1>         Director: <%# Eval("Director") %>         </ItemTemplate>     </custom:DivView>     <asp:SqlDataSource         id="srcProducts"         ConnectionString="<%$ ConnectionStrings:Products %>"         SelectCommand="SELECT Title, Director FROM Products"         Runat="server" />     <br />     <asp:LinkButton         id="lnkReload"         Text="Reload"         Runat="server" />     </div>     </form> </body> </html>