我有一个DataGridView,其绑定源绑定到从Oracle数据库加载的数据表。 (顺便说一句。我认为数据库连接不会导致这种情况)
我还有一个DataGridViewComboBoxColumn绑定到一类人(只有“有”ID和名称),所以我可以显示/允许编辑名称而不是ID。我的问题是,在数据绑定完成后,c#自动“选择”DGV的第一个单元格 - 参见附图。
我还必须使用这一小段代码来确保数据的完整性:
private void _table_ColumnChanging(object sender, DataColumnChangeEventArgs e)
{
if (e.Column == _table.Columns["NEEDED_ID"])
{
if (e.ProposedValue == null)
{
e.ProposedValue = System.DBNull.Value;
}
}
}
现在使用此_table.GetChanges()始终将DGV的第一行返回为“已修改”,但该值并未真正更改 - 它只是DBNull
而不是null
。我可以以某种方式避免自动选择第一个细胞或如何避免这种行为吗?
编辑:与此同时,我发现将第一列更改为不可编辑的内容可以解决此问题。但这只不过是一种解决方法。我真的很感激为此获得一个有效的解决方案。
编辑2:我在ComboBox-DataSource上还有一个空的Object'
DtoPerson blankPerson = new DtoPerson();
blankPerson.Name = String.Empty;
blankPerson.PersonRollenId = -1;
personList.Add(blankPerson);
答案 0 :(得分:0)
GridViewName.ClearSelection();
答案 1 :(得分:0)
尝试在DataGridViewComboBoxColumn的DataSource中放置一个null。例如:
SELECT id, description
FROM yourTable
UNION
SELECT NULL, NULL