日期:2014-05-20  浏览次数:20658 次

DataGridView绑定数据后如何再将某列设成DataGridViewComboBoxColumn
数据已经绑定到DataGridView了,但是要把某列设成combobox可选择的样式,要怎样实现呢?

------解决方案--------------------

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "审核 ")
{
//DataGridViewComboBoxCell cl = new DataGridViewComboBoxCell();
//try { cl = (DataGridViewComboBoxCell)(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]); }
//catch
//{
DataGridViewComboBoxCell cel = new DataGridViewComboBoxCell();
//cel.Style.
cel.Style.BackColor = Color.Cornsilk;

cel.Items.Add( "已审核 ");
cel.Items.Add( "未审核 ");
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] = cel;
//cel.ValueMember = "已审核 ";
//}

}
}
------解决方案--------------------
示例:在DataGridView的CurrentCellChanged事件中:
try
{
Rectangle ree = this.dataGridView1.GetCellDisplayRectangle(this.dataGridView1.CurrentCell.ColumnIndex, this.dataGridView1.CurrentCell.RowIndex, false);
int cols = this.dataGridView1.CurrentCell.ColumnIndex;
this.comboCplb.Visible = false;
this.comboCanDi.Visible = false;
switch (cols)
{
case 4://产品类别
{
this.comboCplb.Left = ree.Left;
this.comboCplb.Top = this.dataGridView1.Top + ree.Top;
this.comboCplb.Width = ree.Width;
this.comboCplb.Height = ree.Height;
this.comboCplb.DropDownWidth += 20;
this.comboCplb.Visible = true;
this.comboCplb.Focus();
break;
}

default:
{
// this.comboDw.Visible = false;
this.comboCplb.Visible = false;
this.comboCanDi.Visible = false;
break;
}
}
}
catch
{ }