我有一个绑定到数据源的datagridview,column [0] AgencyName是主键,不能为null。 单击Bindingnavigator(+)加号以添加新行(两次)将导致错误“Column(AgencyName)不允许null”。如何处理这个空例外?
总的来说,您可以向我展示如何在绑定到数据源的datagridview中处理null和主键约束。请注意,我只是将数据源拖到winform中来创建它。
我有这段代码
private void clientsDataGridView_Validating(object sender, CancelEventArgs e)
{
DataGridViewRow row = clientsDataGridView.CurrentRow as DataGridViewRow;
if (row.Cells[0].Value == DBNull.Value)
{
clientsDataGridView.CancelEdit();
e.Cancel = true;
}
}
除非我提供有效值,否则此代码不会让我浏览其他记录。我希望每当我移动到其他行时取消新行(包含无效数据)
答案 0 :(得分:3)
来自Control.Validating事件描述(DataGridView继承自):
如果在Validating事件委托中将CancelEventArgs的Cancel属性设置为true,则会禁止在Validating事件之后通常发生的所有事件。
因此,通过设置e.Cancel = true,您告诉DataGridView取消所有后续事件(包括RowLeave)。
您正在使用Bindingsource并将Datagridview绑定到它?如果是这样,我会尝试调用Bindingsource.CancelEdit()而不是Datagridview.CancelEdit()。
或者也许:
Dim bm As BindingManagerBase = clientsDatagridView.BindingContext(clientsDatagridView.DataSource, clientsDatagridView.DataMember)
bm.CancelCurrentEdit()