TemplateColumn tm=new TemplateColumn(); 
tm.ItemTemplate=new TextBox(ID); 
tm.ItemTemplate
tm.HeaderText="试验"; 
Datagrid1.Columns.Add(tm); 以上的方法,是我根据CSDN中的一些代码段改编的!为什么,提示NEW出错.如果我要把TextBox动态的加入DataGril中那应该要怎么办?如果我还要再把TextBox绑定到fj表里的F字段,那又应该要怎么办?

解决方案 »

  1.   

    tm.ItemTemplate=new TextBox(ID); 这一举瞎掰,ItemTemplate类型和TextBox类型根本不兼容。下一句更是语法都明显不对。你应该看看关于ItemTemplate的资料,msdn、入门书上,很多。
      

  2.   

    for (int i=0;i<aryline.Length-1;i++)
    {
    TextBox tb= new TextBox();
    tb.ID= "com"+i;
    tb.Text= "姓名"+i;
    Page.Controls[1].Controls.Add(tb);
    Label1.Text+=aryline[i]+Request.Controls[1].[""com"+i"];
    }
      

  3.   

    for (int i=0;i<aryline.Length-1;i++)
    {
    TextBox tb= new TextBox();
    tb.ID= "com"+i;
    tb.Text= "姓名"+i;
    Page.Controls[1].Controls.Add(tb);}
      

  4.   

    在ItemCreated事件中这样写:TemplateColumn tm=new TemplateColumn(); 
    tm.ItemTemplate=new TextBox(ID); 
    tm.ItemTemplate
    tm.HeaderText="试验"; 
    e.Cell[0].Add(tm); 
      

  5.   

    看不下去了,掩面........
    楼主你要好好学习ITemplate接口,毕竟它如此简单得只有一个方法而已。随便到msdn等上边搜一下就好。
      

  6.   

    我一直觉得我们回答问题完全可以做到尊重基本原理,或者说是一个态度问题,而不是为了所谓专家分而过分耍弄虚心求学者。textbox根本没有ITemplate接口没有任何道理赋值给ItemTemplate属性,tm.ItemTemplate放在那里不知所云,TemplateColumn根本不是Control也没有任何道理Add进DataTabelCell的Controls。(在我把.Add理解成是.Controls.Add的手误之下也无法理解有什么道理可能这么写)。特别特别明显地故意copy错误答案上来,我为那些提问者感到不平。
      

  7.   

    ItemTemplate,EditItemTemplate等必须实现ITemplate接口public class CustomeItemTemplate:System.Web.UI.ITemplate,System.Web.UI.INamingContainer
    {
    #region ITemplate 成员
    public void InstantiateIn(Control container)
    {
               // TODO:  添加 CustomeItemTemplate.InstantiateIn 实现
    TextBox tb=new TextBox ();
             container.Controls.Add(tb);
    tb.Text="Init value";
    }
    #endregion
    }if(!Page.IsPostBack)
    {
    TemplateColumn tc=new TemplateColumn ();
    this.DataGrid1.Columns.Add(tc);
    tc.ItemTemplate=new CustomeItemTemplate();
    tc.HeaderText="Custome Column"; this.DataGrid1.DataSource=dt;
    this.DataBind();
    }
      

  8.   

    要实现数据绑定,需要添加DataBinding事件public class CustomeItemTemplate:System.Web.UI.ITemplate,System.Web.UI.INamingContainer
    {
        string columnName="";
        public CustomeItemTemplate(string columnName)
        {
           this.columnName=columnName;
        }    #region ITemplate 成员    public void InstantiateIn(Control container)
        {
          // TODO:  添加 CustomeItemTemplate.InstantiateIn 实现
          TextBox tb=new TextBox ();
          container.Controls.Add(tb);
          tb.DataBinding +=new EventHandler(tb_DataBinding);
          tb.Text="Init value";
        }    #endregion    private void tb_DataBinding(object sender, EventArgs e)
        {
           TextBox tb=sender as TextBox;
           DataGridItem item=(DataGridItem)(tb.NamingContainer);
           tb.Text=((DataRowView)(item.DataItem))[columnName].ToString();
        }
    }
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面

    DataTable dt=new DataTable ();
    dt.Columns.Add("ID",typeof(int));
    dt.Columns.Add ("Name",typeof(string));
    dt.Columns.Add("Sex",typeof(bool));
    DataRow dr;
    for(int i=1;i<=10;i++)
    {
               dr=dt.NewRow();
               dr[0]=i;
               dr[1]="Name"+i.ToString();
               dr[2]=Convert.ToBoolean((i%2));
               dt.Rows.Add(dr);
    } if(!Page.IsPostBack)
    {
               TemplateColumn tc=new TemplateColumn ();
               this.DataGrid1.Columns.Add(tc);
               tc.ItemTemplate=new CustomeItemTemplate("Name");
               tc.HeaderText="Custome Column";           this.DataGrid1.DataSource=dt;
               this.DataBind();
    }

    }
      

  9.   

    你们说得,,,都很,,杂,,,我搞不清楚了!!!对于,,,TemplateColumn这个控件,我只用过一次,,,而且是手动添加的!!!但是,我加入DropDownList、CheckBox还行,,,不会,,出错,,,可是加入TextBox
    编译器就提示出错!!!
      

  10.   

    同意 sp1234(眼看着逆流泛滥成灾,有心无力,好累呀!)  说的,没必要骗专家分啊。另外提问之前也应该先看看MSDN,MSDN有的东西就没必要问了。如果楼主放过其他控件都可以,就是TextBox有问题,那就贴代码和错误来看看,往往这是一些细节引起的。