我有一个datagridview。
当我加倍点击一个单元格时,它变为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;
}
答案 0 :(得分:0)
以此页面为例:
http://msdn.microsoft.com/en-us/library/7tas5c80%28v=vs.110%29.aspx
并将DateTimePicker替换为ComboBox。
然后它只会在编辑控件处于活动状态时显示组合框下拉箭头。