我在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());
}
请帮忙....谢谢
答案 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