1

我有一个数据网格视图,它数据绑定到实体框架“表”:

    public ObjectSet<TEntity> tableData { get; private set; }
    private BindingSource tableBinding;

    public AuxiliaryTableEditor(ObjectSet<TEntity> something)
    {
        InitializeComponent();

        this.tableData = something;
        this.tableBinding = new BindingSource();
        this.tableBinding.DataSource = tableData;

        this.auxiliaryTableEditorGridView.DataSource = tableBinding;
    }

这工作得很好。

问题是这样的:如果用户开始编辑/添加一行,如果他们在单元格中进入编辑模式,删除内容,然后制表符或单击它,将引发未处理的异常(如大多数 db 列不允许空值)。这是完全正常且可以接受的,但我希望能够捕捉和处理这些异常,但我不知道在哪里/如何捕捉它们

我尝试在 datagridview 上使用几种不同的事件处理程序,例如.DataError.RowValidating以及我现在不记得的其他一些事件处理程序……但我似乎无法捕捉到讨厌的异常。

任何建议都非常感谢!

编辑:我应该补充一点,异常通常是这样的:“用户代码未处理 ConstraintException。此属性不能设置为空值”。

4

1 回答 1

1

尝试CellEditEndingorCurrentCellChanged事件。

编辑:或者你也可以让你的属性的设置器处理空值..

public int Number
{
  get { return _number; }
  set
  {  
      if (null == value)
      {
          // handle here
      }
  }
}

编辑:有关更多信息,请参阅提交空字段时的实体框架错误

于 2012-12-11T18:27:06.347 回答