private void Form1_Load(object sender, EventArgs e)
        {
             cm= new ComboBox();
            
            cm.Dock = DockStyle.Fill;
            this.sqlDataAdapter1.Fill(dsTable1, "Orders");
            this.dbgOrderView.SetDataBinding(dsTable1, "Orders");
            //ComBox绑定的数据
            cm.DataSource = dsTable1.Orders;
            //填充的是EmployyeeID 是:1,2,3,4,5
            cm.DisplayMember = "EmployeeID";
           
            DataGridTextBoxColumn dgTextBoxColumn=(DataGridTextBoxColumn)dbgOrderView.TableStyles[0].GridColumnStyles[1];
            cm.SelectionChangeCommitted+= new EventHandler(dgComboxBoxColumn_SelectionChangeCommitted);
           dgTextBoxColumn.TextBox.Controls.Add(cm);
            
        }
        private void dgComboxBoxColumn_SelectionChangeCommitted(object sender, EventArgs e)
        {
           //这里的str值是System.Data.DataRowView 类型是string
             string str=((ComboBox)sender).SelectedItem.ToString();
            //type是System.String类型
             string type=str.GetType().ToString();
             Console.WriteLine("type="+type);
           //到这会发生格式异常 FormatExprsion
             int i= int.Parse(str);
            // Console.WriteLine(i);            // dbgOrderView[this.dbgOrderView.CurrentCell] = str;
        }

解决方案 »

  1.   

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;namespace DataGridCombBox
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.DataGrid dgdFunctionArea;
    private DataTable dtblFunctionalArea;
    private System.Windows.Forms.Button buttonFocus;
    private System.Windows.Forms.StatusBar statusBar1;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    this.PopulateGrid();
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows 窗体设计器生成的代码
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.dgdFunctionArea = new System.Windows.Forms.DataGrid();
    this.buttonFocus = new System.Windows.Forms.Button();
    this.statusBar1 = new System.Windows.Forms.StatusBar();
    ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();
    this.SuspendLayout();
    // 
    // dgdFunctionArea
    // 
    this.dgdFunctionArea.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
    | System.Windows.Forms.AnchorStyles.Left) 
    | System.Windows.Forms.AnchorStyles.Right)));
    this.dgdFunctionArea.DataMember = "";
    this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    this.dgdFunctionArea.Location = new System.Drawing.Point(8, 56);
    this.dgdFunctionArea.Name = "dgdFunctionArea";
    this.dgdFunctionArea.Size = new System.Drawing.Size(496, 256);
    this.dgdFunctionArea.TabIndex = 0;
    // 
    // buttonFocus
    // 
    this.buttonFocus.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    this.buttonFocus.Location = new System.Drawing.Point(288, 320);
    this.buttonFocus.Name = "buttonFocus";
    this.buttonFocus.Size = new System.Drawing.Size(80, 24);
    this.buttonFocus.TabIndex = 1;
    this.buttonFocus.Text = "获取焦点";
    this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);
    // 
    // statusBar1
    // 
    this.statusBar1.Location = new System.Drawing.Point(0, 351);
    this.statusBar1.Name = "statusBar1";
    this.statusBar1.Size = new System.Drawing.Size(512, 22);
    this.statusBar1.TabIndex = 2;
    this.statusBar1.Text = "作者:刘文博 email:[email protected]";
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(512, 373);
    this.Controls.Add(this.statusBar1);
    this.Controls.Add(this.buttonFocus);
    this.Controls.Add(this.dgdFunctionArea);
    this.Name = "Form1";
    this.Text = "grid控件下拉列表框和日历控件演示";
    ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } //初始化datagrid
    private void PopulateGrid()
    {
    this.dtblFunctionalArea = new DataTable("FunctionArea");
    string[] arrstrFunctionArea = new string[2]{"列表框", "普通文本"};
    DataColumn dtCol = null; for (int i=0; i<2; i++)
    {
    dtCol = new DataColumn(arrstrFunctionArea[i], Type.GetType("System.String"));
    dtCol.DefaultValue = "";
    this.dtblFunctionalArea.Columns.Add(dtCol);
    } DataColumn dtDate = new DataColumn("日期控件");
    dtDate.DataType = Type.GetType("System.DateTime");
    dtDate.DefaultValue = DateTime.Now;
    this.dtblFunctionalArea.Columns.Add(dtDate); DataColumn dtcCheck = new DataColumn("复选框");
    dtcCheck.DataType = Type.GetType("System.Boolean");
    dtcCheck.DefaultValue = false;
    this.dtblFunctionalArea.Columns.Add(dtcCheck); this.dgdFunctionArea.DataSource = this.dtblFunctionalArea; if (!this.dgdFunctionArea.TableStyles.Contains("FunctionArea"))
    {
    DataGridTableStyle dgdtblStyle = new DataGridTableStyle();
    dgdtblStyle.MappingName = this.dtblFunctionalArea.TableName;
    this.dgdFunctionArea.TableStyles.Add(dgdtblStyle);
    dgdtblStyle.RowHeadersVisible = false;
    dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;
    dgdtblStyle.AllowSorting = false;
    dgdtblStyle.HeaderForeColor = Color.White;
    dgdtblStyle.HeaderFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Bold, GraphicsUnit.Point, (Byte)(0));
    dgdtblStyle.GridLineColor = Color.DarkGray;
    dgdtblStyle.PreferredRowHeight = 22;
    dgdFunctionArea.BackgroundColor = Color.White; GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;
    colStyle[0].Width = 100;
    colStyle[1].Width = 50;
    colStyle[2].Width = 100;
    colStyle[3].Width = 80;
    } DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0];
    ComboBox cmbFunctionArea = new ComboBox();
    cmbFunctionArea.Items.AddRange(new object[]{"选项一", "选项二", "选项三"});
    cmbFunctionArea.DropDownStyle = ComboBoxStyle.DropDownList;
    cmbFunctionArea.Dock = DockStyle.Fill; cmbFunctionArea.SelectionChangeCommitted += new EventHandler(cmbFunctionArea_SelectionChangeCommitted);
    dgtb.TextBox.Controls.Add(cmbFunctionArea); DataGridTextBoxColumn dgtb1 = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[2];
    DateTimePicker dtp = new DateTimePicker();
    dtp.Format = DateTimePickerFormat.Short;
    dtp.Dock = DockStyle.Fill; dtp.CloseUp += new EventHandler(dtp_CloseUp);
    dgtb1.TextBox.Controls.Add(dtp);
    } private void GetFocus (int row, int col)
    {
    this.dgdFunctionArea.Focus();
    DataGridCell dgc = new DataGridCell(row, col);
    this.dgdFunctionArea.CurrentCell = dgc;
    DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[col];
    dgtb.TextBox.Focus();
    } private void buttonFocus_Click(object sender, System.EventArgs e)
    {
    GetFocus (2,1);
    } private void cmbFunctionArea_SelectionChangeCommitted(object sender, EventArgs e)
    {
    this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
    } private void dtp_CloseUp(object sender, EventArgs e)
    {
    this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((DateTimePicker)sender).Value.ToString();
    }
    }
    }你可以参考http://download.csdn.net/source/283860