Search

Friday, February 14, 2014
0 comments

How to Create and Apply Templates to Controls Dynamically

5:48 AMFriday, February 14, 2014
We already discuss about create template in .aspx page. Today we will learn, create template dynamically (using class). There are lots of steps to follow
Step-1 : Create a MyTemplate class , which is implement from ITemplate interface

public class MyTemplate : ITemplate
{
}

Here ITemplate interface create ASP.NET template.

Step-2 : Declare ListItemType enum variable in the class

ListItemType templateType;

Step-3 : Initialize variable in class constructor, which you want to take in Repeater control like HeaderTemplate, Item Template, Footer Template etc.

public MyTemplate(ListItemType type)
    {
        templateType = type;
    }

Step-4 : Define InstantiateIn method ( for more detail use link ) with proper template view
Step-5 : Bind Repeater Control through DataBinder class.

Full MyTemplate.cs file code


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;

/// <summary>
/// Summary description for MyTemplate
/// </summary>
public class MyTemplate :ITemplate
{
    ListItemType templateType;
    public MyTemplate(ListItemType type)
    {
        templateType = type;
    }

    public void InstantiateIn(Control container)
    {
        PlaceHolder ph = new PlaceHolder();
        Label item1 = new Label();
        Label item2 = new Label();
        item1.ID = "item1";
        item2.ID = "item2";

        switch (templateType)
        {
            case ListItemType.Header:
                ph.Controls.Add(new LiteralControl("<table border=\"1\">" +
                    "<tr><td><b>sno</b></td>" +
                    "<td><b>Name</b></td></tr>"));
                break;
            case ListItemType.Item:
                ph.Controls.Add(new LiteralControl("<tr><td>"));
                ph.Controls.Add(item1);
                ph.Controls.Add(new LiteralControl("</td><td>"));
                ph.Controls.Add(item2);
                ph.Controls.Add(new LiteralControl("</td></tr>"));
                ph.DataBinding += new EventHandler(Item_DataBinding);
                break;
            case ListItemType.AlternatingItem:
                ph.Controls.Add(new LiteralControl("<tr bgcolor=\"lightblue\"><td>"));
                ph.Controls.Add(item1);
                ph.Controls.Add(new LiteralControl("</td><td>"));
                ph.Controls.Add(item2);
                ph.Controls.Add(new LiteralControl("</td></tr>"));
                ph.DataBinding += new EventHandler(Item_DataBinding);
                break;
            case ListItemType.Footer:
                ph.Controls.Add(new LiteralControl("</table>"));
                break;
        }
        container.Controls.Add(ph);
    }
    static void Item_DataBinding(object sender, System.EventArgs e)
    {
        PlaceHolder ph = (PlaceHolder)sender;
        RepeaterItem ri = (RepeaterItem)ph.NamingContainer;
        Int32 item1Value = (Int32)DataBinder.Eval(ri.DataItem, "sno");
        String item2Value = (String)DataBinder.Eval(ri.DataItem, "Name");
        ((Label)ph.FindControl("item1")).Text = item1Value.ToString();
        ((Label)ph.FindControl("item2")).Text = item2Value;
    }


Step-6 : Take a Web Form (.aspx) page, place Repeater control on it.
Step-7 : Bind Repeater control on Page_Load event.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       SqlConnection conn =new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

        SqlDataAdapter DA;
        DataSet DS;

        DA = new SqlDataAdapter("SELECT * FROM [userdata]", conn);
        DS = new DataSet();

        Repeater1.HeaderTemplate = new MyTemplate(ListItemType.Header);
        Repeater1.ItemTemplate = new MyTemplate(ListItemType.Item);
        Repeater1.AlternatingItemTemplate =new MyTemplate(ListItemType.AlternatingItem);
        Repeater1.FooterTemplate = new MyTemplate(ListItemType.Footer);
        DA.Fill(DS, "userdata");
        Repeater1.DataSource = DS.Tables["userdata"];
        Repeater1.DataBind();
    }
}

Code Generate the following output

How to Create and Apply Templates to Controls Dynamically

Protected by Copyscape Online Copyright Protection Software

0 comments :

Post a Comment

 
Toggle Footer
Top