Data Browser - Viewing Site  Sector 23 Code Bank Logged in as:  Guest  




           


Dynamically Build Template Column as a Reusable Server Control
How to build a .NET GridView TemplateField (TemplateColumn) as a reusable server control column:


public class CustomDisplayField : System.Web.UI.WebControls.TemplateField
{

public CustomDisplayField ()
: base()
{
this.ItemStyle.Wrap = false;
this.HeaderText = "MyHeader";
this.SortExpression = "MySort";
this.ItemTemplate = new AddCustomToGridView();
}


public class AddCustomToGridView : ITemplate
{
public AddCustomToGridView ()
{
}

void ITemplate.InstantiateIn(System.Web.UI.Control container)
{
Image img = new Image();
img.DataBinding += new EventHandler(img_DataBinding);
container.Controls.Add(img);

container.Controls.Add(new LiteralControl(" "));

HyperLink ht = new HyperLink();
ht.DataBinding += new EventHandler(ht_DataBinding);
container.Controls.Add(ht);
}

void img_DataBinding(object sender, EventArgs e)
{
Image img = (Image)sender;
GridViewRow container = (GridViewRow)img.NamingContainer;
object myData = DataBinder.Eval(container.DataItem, "myData");
if (myData != DBNull.Value)
{
img.ImageUrl = myData .ToString();
}
}

void ht_DataBinding(object sender, EventArgs e)
{
HyperLink lnk = (HyperLink)sender;
GridViewRow container = (GridViewRow)lnk.NamingContainer;
object myData = DataBinder.Eval(container.DataItem, "myData");

if (myData != DBNull.Value)
{
lnk.Text = myData.ToString
}
}
}
}

Created By: amos 3/7/2014 6:13:34 PM
Updated: 3/7/2014 6:13:57 PM