2014-08-28 39 views
1

我有一个datagridview。如何将DataGridViewComboBoxCell更改回DataGridviewCell

当我加倍点击一个单元格时,它将更改为DataGridViewComboBoxCell,然后我希望当用户选择一个索引时,它会像以前一样用新值更改回DataGridviewCell 。

我该怎么办?

namespace GridEnterChanged 
{ 
    public partial class Form1 : Form 
    { 
     DataTable dt; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      sqlConnection1.Open(); 
      dt = new DataTable(); 
      SqlDataAdapter sda = new SqlDataAdapter("select * from customer", sqlConnection1); 
      sda.Fill(dt); 
     dataGridView1.EditingControlShowing +=dataGridView1_EditingControlShowing; 
     dataGridView1.CellEndEdit+=dataGridView1_CellEndEdit; 
     comboBox1.DataSource = dt; 
     comboBox1.DisplayMember = "FName"; 
     comboBox1.ValueMember = "CustomerID"; 

     DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); 
     cmb.DataSource = dt; 
     cmb.DisplayMember = "FName"; 
     cmb.ValueMember = "CustomerID"; 

     cmb.HeaderText = "Select Data"; 
     cmb.Name = "cmb"; 
     cmb.MaxDropDownItems = 4; 
     //cmb.Items.Add("True"); 
     //cmb.Items.Add("False"); 
     dataGridView1.Columns.Add(cmb); 
     dataGridView1.DataSource = dt; 


     sqlConnection1.Close(); 

     dataGridView1.DataError += dataGridView1_DataError; 
    } 

     private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) 
     { 
      //throw new NotImplementedException(); 
     } 
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) 
     { DataGridView dg = sender as DataGridView; 
      MessageBox.Show(dg.SelectedCells[0].ToString()+e.ColumnIndex+" "+e.RowIndex); 

      DataGridViewComboBoxCell dvc = new DataGridViewComboBoxCell(); 

      dvc.DataSource = dt; 
     //int selectedrowindex = e.SelectedCells[0].RowIndex; 
     int tmp = dg.CurrentCell.ColumnIndex; 
     dvc.DisplayMember = dg.Columns[tmp].HeaderText; 
     dvc.ValueMember = "CustomerID"; 
     this.dataGridView1[e.ColumnIndex, e.RowIndex] = dvc; 

    } 

回答

相关问题