代码如下:
public class ColumnTemplate1 : ITemplate 

public void InstantiateIn(Control container)       

TextBox tb=new  TextBox();
tb.ID="score"; 
container.Controls.Add(tb); 
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
TemplateColumn tm=new TemplateColumn();
tm.ItemTemplate=new ColumnTemplate1(); 
tm.HeaderText=DropDownList3.SelectedItem.Value; 
DataGrid1.Columns.Add(tm); 
     ..............................................
这个新建的列tm怎么没有效呢?
还需要什么加载什么事件或其它什么吗?

解决方案 »

  1.   

    PostBack的时候添加了吗?
    你可以设置一个状态标志,以此来判断是不是在PostBack的时候需要再次添加模板列
      

  2.   

    比如:
    private void Button1_Click(object sender, System.EventArgs e)
    {
    AddTemplate();
    ViewState["adduc"]=1;
    SetBind();
    }private void AddTemplate()
    {
    TemplateColumn tm=new TemplateColumn();
    tm.ItemTemplate=new ColumnTemplate1(); 
    tm.HeaderText=......; 
    DataGrid1.Columns.Add(tm); 
    }private void SetBind()
    {
    ..................绑定操作
    }if(!IsPostBack)
    {
    SetBind();
    }
    if(ViewState["adduc"]!=null) 

     AddTemplate();
    } public class ColumnTemplate1 : ITemplate 
    {
    ..........
    }
      

  3.   

    TO LoveCherry;谢谢你!
    怎么按你的做还是没有加那一个模板列呢?感觉上AddTemplate()没有执行!为什么呢?
      

  4.   

    to LoveCherry:DataGrid1其它也是静态帮定的列(DataBinder.Evla()),而且都显示出来了,数据源应该没有问题的,动态的摸板列只有分数列(ID=score),现在就是没有哪个分数列了,我想要的效果是:
    年级  班级  姓名  语文(摸板列的HEADERTEXT,是动态选的)
    1     1     AA    88
    1     1     BB    77
    .......
    现在年级,班级,姓名都有了,就是没有'语文'的那一摸板列(科目下面的文本框也没有),哎,怎么回事呀?
    你可以给我再看看吗?
    是不是摸板列还少了什么该绑定的东西?
      

  5.   

    给个例子,你先看看
    http://www.cnblogs.com/lovecherry/archive/2005/03/26/126102.html
    如果不行的话贴出更多的代码