看着本来就能够解决的问题,做到后来确是一踏糊涂.头大了,心碎了,我累了,兄弟姐妹们,帮帮我吧!请看以下代码:
private void CreateDataGrid(string tableName,string course,string group,string groupValue)
{
   //创建DataGrid
   string temp;
   //数据分组方式
   if(group=="班号")
         temp="SubString(学号,4,2)";
   else
         temp="考室";
   AdvancedDataOP dataOP=new AdvancedDataOP("Student");//此乃一个封装了数据库相关操作的类,构造时将其连接到SQL Server中的Student库   //根据指定的科目得到相应的列
   if(course=="语文")
   {
    if(groupValue=="全部")
          ds=dataOP.GetDataSet(tableName+" ORDER BY "+temp,"考号,姓名,语卷");
    else
          ds=dataOP.GetDataSet(tableName,"考号,姓名,语卷",temp+"='"+groupValue+"' ORDER BY "+temp);
    //以上得到数据集    //下开始定义DataGrid列
    BoundColumn col=new BoundColumn();
    col.HeaderText="考号";
    col.DataField="考号";
    dgInput.Columns.Add(col);    col=new BoundColumn();
    col.HeaderText="姓名";
    col.DataField="姓名";
    dgInput.Columns.Add(col);    TemplateColumn tCol=new TemplateColumn();
    tCol.HeaderText="语卷";
    tCol.EditItemTemplate=new TemplateItem("语卷");
    
    dgInput.Columns.Add(tCol);    dgInput.DataSource=ds;
    dgInput.DataMember=tableName;
    dgInput.DataBind();    
   }
  }
}class TemplateItem:System.Web.UI.ITemplate
{
  string columnName;
   
  public TemplateItem(string colnamer)
  {
   columnName = colnamer;
  }  public void InstantiateIn(System.Web.UI.Control container)
  {
   TextBox txtScore=new TextBox();
   txtScore.Text=null;
   container.Controls.Add(txtScore);
  }程序运行后在给定相关参数后能动态显示出列,前两个BoundColumn的值也完全正常.我的目的是要在后一列(即语卷)列实现数据录入,可是,问题出来了:TextBox好像并没有绑定到DataGrid模板列中,根本就没有数据输入焦点,这叫我怎么输入数据呢?!请问这究竟是哪儿出了问题?!该怎么解决叱?!请指教.谢谢!!!

解决方案 »

  1.   

    class TemplateItem:System.Web.UI.ITemplate
    {
      string columnName;
       
      public TemplateItem(string colnamer)
      {
       columnName = colnamer;
       InstantiateIn();
      }  public void InstantiateIn()
      {
       TextBox txtScore=new TextBox();
       txtScore.Text=null;
       container.Controls.Add(txtScore);
      }
      

  2.   

    呵呵,这样子可是不行的, InstantiateIn(Controls container)方法是由系统自己调用的,不需要显示调用,而且这这个方法是指定模板元素的容器的,在System.Web.UI.ITemplate接口中的定义就有参数,所以在接口的实现中不能省掉该参数,呵呵.
    该问题的关键是没有弄清模板列和列模板的概念.好在我已经解决了.
      

  3.   

    加入编辑模板列
    在Edit模板里面放textbox
    编辑Edit_Command事件,相信你的问题能更好的解决
    DataGrid 提供了有del,update,edit模版