C# asp.net通过单击按钮动态创建Gridview项目模板

C# asp.net通过单击按钮动态创建Gridview项目模板,c#,asp.net,gridview,itemplate,C#,Asp.net,Gridview,Itemplate,asp.net 4.0表单 我需要使用链接到表ID键的按钮动态创建Gridview 因此,我设置了Gridview并开始添加列: private void SetupGV() { try { //0 TemplateField tf = new TemplateField(); tf.HeaderText = "X"; tf.ItemTemplate = new AddTo

asp.net 4.0表单

我需要使用链接到表ID键的按钮动态创建Gridview

因此,我设置了Gridview并开始添加列:

   private void SetupGV()
    {

        try
        { //0
            TemplateField tf = new TemplateField();
            tf.HeaderText = "X";


            tf.ItemTemplate = new AddToItemTemplate();
            GV.Columns.Add(tf);

            //1
            BoundField b = new BoundField();
            b.DataField = "FullName";
            b.HeaderText = @"Staff / Role";
            GV.Columns.Add(b);

....
然后创建ITemplate AddToItemTemplate:

    public class AddToItemTemplate : ITemplate
    {

        public AddToItemTemplate(){}

        public void InstantiateIn(Control container)
        {

            ImageButton ib = new ImageButton();
            ib.ImageUrl = "~/Content/CIDimg/action4.gif";
            ib.Command += ib_Command;
            ib.CommandName = "delete";

            container.Controls.Add(ib);
        }

        void ib_Command(object sender, CommandEventArgs e)
        {
            string s = e.CommandArgument.ToString();

        }

        #endregion
    }          
我在GV_rowdabund中收集我的ID,并在image button命令参数中设置它。没有问题

这一切都可以正常工作,但方法ib_命令是静态的,因为它是ITemplate的一部分。 我无法访问任何页面控件或任何页面实例变量


在ASPX标记文件中创建Gridview时,是否有办法将按钮(ib.command+=)链接到任何页面方法,就像使用“oncommand”标记一样?

根据您的代码和注释,您正在尝试向Gridview添加图像按钮列。为此,不需要创建新模板。相反,您可以添加按钮字段,如下所示

ButtonField buttonField = new ButtonField();
buttonField.ButtonType = ButtonType.Image;
buttonField.ImageUrl = "~/Images/bullet.png";
buttonField.CommandName = "delete";
GV.Columns.Add(buttonField);
现在,在gridview的RowCommand事件中,您可以执行所需的操作

protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
{
   if (e.CommandName=="delete")
   {
   }
}

为什么你需要AddToItemTemplate,你有很多控件要加载吗?不是只有一个,我怎么能不创建模板就加载呢?