如何在DataGridViewComboBoxCell中设置默认项目

时间:2012-08-21 12:55:22

标签: c# winforms datagridview

我在datagridview中有一个DataGridViewComboBoxCell。我在form_load中加载了它。在最初添加新行时,DataGridViewComboBoxCell中显示空白。但我的问题是如何设置默认值,说“其他” “在那个DataGridViewComboBoxCell中,每当我尝试添加新行时,它都会显示默认项目。

我想向您展示我的代码。

DataGridViewComboBoxCell comboItem_current = dataGridView1.CurrentRow.Cells [2] as DataGridViewComboBoxCell;

                comboItem_current.Items.Clear();
                comboItem_current.Items.Add("Other");

                foreach (DataRow dr in ds_Item.Tables[0].Rows)
                {
                    DataGridViewComboBoxCell comboItem1 = dataGridView1.CurrentRow.Cells[2] as DataGridViewComboBoxCell;  
                    comboItem1.Items.Add(dr[1].ToString());

                }

请帮忙....谢谢

3 个答案:

答案 0 :(得分:3)

我知道这是一个古老的帖子,但希望我可以帮助一些人避免我的困惑。

使用CellFormatting是一个失败者,因为它每次触及单元格时都会调用它。结果是该值不断设置回默认值。

对我有用的是处理DefaultValuesNeeded事件,如下所示:

private void OnGridDefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
    e.Row.Cells["Position"].Value = PositionEnum.Any;
}

这允许我设置默认值,并允许用户更改值。

答案 1 :(得分:0)

您可以这样做:Set DatagridviewComboBoxColumn Default Value

这样:

只需为datagridview添加CellFormatting事件

void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0) //Index of your DataGridViewComboBoxColumn 
    {
        e.Value = "Default Value";
    }
}

答案 2 :(得分:-1)

为什么不保持简单,只需使用

之类的东西
<DataGridComboBoxColumn SelectedItemBinding="{Binding MyProp}" Width="*" Header="MyHeader" ></DataGridComboBoxColumn>

当然你的DataGrid需要使用IEnumerable设置的DataContext属性,其中MyObj有MyProp