防止在.NET Datatable中的RowChanging中触发RowChanged事件

时间:2012-09-12 15:45:32

标签: .net datatable

在我们的应用程序中,我们在数据表中添加一行。我想在将行添加到表之前验证该行,如果数据不符合业务要求,则不会添加该行。 我认为RowChanging甚至是我需要添加验证码的地方。但是,如何阻止将行添加到DataTable?

2 个答案:

答案 0 :(得分:1)

我认为可以阻止在RowChanging事件处理程序中添加行的唯一方法是抛出异常:

if (e.Action == DataRowAction.Add) {
    if (e.Row["SomeColumn"].ToString() == "AnInvalidValue") {
        throw new InvalidOperationException("You can't do that.");
    }
}

你显然必须抓住这个例外并优雅地处理它。

更好的方法是在尝试添加新DataRow之前在用户界面中进行验证。

答案 1 :(得分:0)

假设我们有一个DataGridView。您必须使用dataGridView1_RowValidating事件。下方是一个简单的代码:

私有无效dataGridView1_RowValidating(对象发送者,DataGridViewCellCancelEventArgs e)         {

return {
    sessionData: state.sessionData,
    requesting: state.requesting,
    hasError: state.hasError
    status: state.status,
    requesting: true,
    hasError: false,
    status: undefined,
};