<asp:TemplateField HeaderText="Restore">
                        <ItemTemplate>
                            <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Restore" Text="Restore" CommandArgument='<%#Eval( "ID ")%>'></asp:LinkButton>
                        </ItemTemplate>
</asp:TemplateField>如果在aspx页面上添加一个TemplateField是这样的,如何在后台给一个GridVew添加一个这样的TemplateField

解决方案 »

  1.   

    百度一下 gridview 动态模板列
    会有很多,代码比较长,要慢慢理解才行
      

  2.   

        protected void Page_Load(object sender, EventArgs e)
        {
            // SqlDataSource相关设置
            SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
            SqlDataSource1.SelectCommand = "select employeeID,FirstName,LastName from employees";        if (!IsPostBack)
            {
                // 一看就知道
                GridView1.DataSourceID = "SqlDataSource1";
                GridView1.AutoGenerateColumns = false;            TemplateField tf1 = new TemplateField();
                // 实例化我们的自定义模板类(实现了ITemplate接口的都行)
                // 而后将该对象赋值给TemplateField的ItemTemplate属性
                MyTemplate t1 = new MyTemplate("FirstName");
                tf1.HeaderText = "First Name";
                tf1.ItemTemplate = t1;            TemplateField tf2 = new TemplateField();
                MyTemplate t2 = new MyTemplate("LastName");
                tf2.HeaderText = "Last Name";
                tf2.ItemTemplate = t2;            // 增加模板列到GridView的列集合里。
                GridView1.Columns.Add(tf1);
                GridView1.Columns.Add(tf2);
            }
        }
    }
    /// <summary>
    /// 自定义模板类
    /// </summary>
    public class MyTemplate : ITemplate
    {
        private string _colname;    /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="colname">列的名字(对应数据库的字段)</param>
        public MyTemplate(string colname)
        {
            this._colname = colname;
        }    /// <summary>
        /// 实现接口ITemplate的方法
        /// </summary>
        /// <param name="container"></param>
        /// <res>
        /// 1、new一个LiteralControl
        /// 2、给LiteralControl加一个绑定事件
        /// 3、把该控件加到容器控件集合里
        /// </res>
        public void InstantiateIn(Control container)
        {
            LiteralControl l = new LiteralControl();
            l.DataBinding += new EventHandler(this.OnDataBinding);
            container.Controls.Add(l);
        }    private void OnDataBinding(object sender, EventArgs e)
        {
            LiteralControl l = (LiteralControl)sender;        // 得到l的容器(父亲)——GridViewRow
            GridViewRow container = (GridViewRow)l.NamingContainer;
            // 通过列名(对应数据库的字段)给l赋值
            l.Text = ((DataRowView)container.DataItem)[_colname].ToString();
        }
    }
      

  3.   

    public class NimeuxTemplete : ITemplate
         {
             private string _colname;        public NimeuxTemplete(string colname)
            {
                this._colname = colname;
            }              public void InstantiateIn(Control container)
            {
                LiteralControl l = new LiteralControl();
                l.DataBinding += new EventHandler(this.OnDataBinding);
                container.Controls.Add(l);
            }        private void OnDataBinding(object sender, EventArgs e)3        {
                LiteralControl l = (LiteralControl)sender;            GridViewRow container = (GridViewRow)l.NamingContainer;            l.Text = ((DataRowView)container.DataItem)[_colname].ToString();
            }
        }
    }
     TemplateField tf1 = new TemplateField();
    NimeuxTemplete nt1 = new NimeuxTemplete("OldCard");
        tf1.HeaderText = "卡号";
       tf1.ItemTemplate = nt1;
    this.gvFSBT.Columns.Add(tf1);
      

  4.   

    我是想在里面添加一个Button,并且给他CommanArgument赋值,并且能触发事件啊。求教!
      

  5.   

       if (!IsPostBack)
        {
            GridView1.DataSourceID = "SqlDataSource1";
            GridView1.AutoGenerateColumns = false;
            GridView1.DataKeyNames = new string[] { "EmployeeID" };
            GridView1.AllowPaging = true;
            GridView1.AllowSorting = true;
            GridView1.PageSize = 5;        BoundField bf3 = new BoundField();
            CommandField cf = new CommandField();
            cf.ButtonType = ButtonType.LinkButton;
            cf.CommandName = "Restore";
            cf.ShowCancelButton = true;
            cf.ShowEditButton = true;
            GridView1.Columns.Add(bf3);
            GridView1.Columns.Add(cf);
        }