Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add TemplateField programmatically

please consider this code:

<asp:TemplateField>
     <ItemTemplate>
         <asp:LinkButton runat="server" ID="linkmodel" Text='<%#Eval("MenuItem") %>' 
                         CommandName='<%#Eval("CommandName") %>'
                         OnCommand="linkmodel_Click" 
                         OnClientClick="return confirm('Are You Sure')">
         </asp:LinkButton>
     </ItemTemplate>
</asp:TemplateField>

How to add this column programmatically using C#?

thanks

like image 537
Arian Avatar asked Sep 25 '12 10:09

Arian


1 Answers

This might help to get started:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    { 
        var linkField = new TemplateField();
        linkField.ItemTemplate = new LinkColumn();
        GridView1.Columns.Add(linkField);
    }
}


class LinkColumn : ITemplate
{
    public void InstantiateIn(System.Web.UI.Control container)
    {
        LinkButton link = new LinkButton();
        link.ID = "linkmodel";
        container.Controls.Add(link);
    }
}

But:

Although you can dynamically add fields to a data-bound control, it is strongly recommended that fields be statically declared and then shown or hidden, as appropriate. Statically declaring all your fields reduces the size of the view state for the parent data-bound control.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.templatefield.aspx

like image 118
Tim Schmelter Avatar answered Oct 07 '22 11:10

Tim Schmelter