http://msdn.microsoft.com/msdnmag/issues/03/08/DataGrids/default.aspx
or
http://support.microsoft.com/?id=323167

解决方案 »

  1.   

    public void ItemDataBound(Object sender, DataGridItemEventArgs e)
    {
    int intCellCount=e.Item.Cells.Count;
    DataRowView drv = (DataRowView) e.Item.DataItem;
    if (drv == null) return;
    //数据类型
    if (drv["数据类型"]!=null)
    {
    TableCell tc = e.Item.Cells[7];
    tc.Attributes["Width"]="50px";
    string _sql="SELECT DISTINCT a.coldatatype "+
    "FROM sys_FlexHeadCtl as a "+
    "WHERE (((a.coldatatype)<>'')) "+
    "ORDER BY a.coldatatype";
    if(oleCn.State!=ConnectionState.Open)
    {
    oleCn.ConnectionString=strSqlCon;
    oleCn.Open();
    }
    DataSet ds = new DataSet();
    OleDbDataAdapter oleDa=new OleDbDataAdapter();
    oleCmd.Connection=oleCn;
    oleCmd.CommandText=_sql;
    oleCmd.CommandType=CommandType.Text;
    oleDa.SelectCommand=oleCmd;
    oleDa.Fill(ds,"myDDL");
    DropDownList ddl=new DropDownList();
    ddl.BorderStyle=BorderStyle.None;
    ddl.DataTextField="coldatatype";
    //ddl.DataValueField="coldatatype"; 
    ddl.Style.Add("BACKGROUND-COLOR","transparent");
    ddl.DataSource=ds.Tables[0];
    ddl.DataBind();
    tc.Controls.Add(ddl);
    ListItem li=new ListItem("","");
    ddl.Items.Insert(0,li);
    if((drv["数据类型"]).ToString()!="")
    ddl.SelectedIndex=ddl.Items.IndexOf(ddl.Items.FindByText((drv["数据类型"]).ToString()));
    else
    ddl.SelectedIndex=0;
    }

    }
      

  2.   

    加入模板列,然后更改模板列属性为DropDownList就可以了
      

  3.   

    加入模板列,然后编辑模板列,把DropDownList加进去。
      

  4.   

    假如模块列解决不了啊,是在WINFORM中的,怎么解决啊,说具体点好吗。谢谢
    关注中。
      

  5.   

    在 WinForm 中,一个比较简单的解决办法就是你自己扩展一个DataGridColumnStyle,嵌入你想要的控件。具体的,你可以参见 DataGridColumnStyle 类的帮助,你必须重写几个函数。
    .NET Framework 自带的 DataGridBoolColumn 及 DataGridTextBoxColumn 就是从这个类继承而来的。
    有一段时间在网上曾经看到过一个简单的例子,就是在其中加入ComboBox的。你可以搜索一下。