如何以编程方式添加TemplateField

Ari*_*ian 13 c# asp.net gridview c#-4.0

请考虑以下代码:

<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>
Run Code Online (Sandbox Code Playgroud)

如何使用C#以编程方式添加此列?

谢谢

Tim*_*ter 21

这可能有助于入门:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是:

虽然可以动态地将字段添加到数据绑定控件,但 强烈建议静态声明字段,然后根据需要显示或隐藏字段.静态声明所有字段会减少父数据绑定控件的视图状态的大小.

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

  • 谢谢,但我如何传递属性?比如`Text,CommandName,OnClientClick` (2认同)