DataTable RowChanged事件引发了两次?

时间:2012-07-24 06:05:36

标签: c# events datatable

我想在使用SqlDataAdapter填充数据时收听RowChanged事件。尽管数据没有变化,但事件仍然有效。有人可以解释一下为什么吗?我该怎么办只能举起一次?

class Program
{
    static void Main(string[] args)
    {
        string connectionString = "myConnectionString";

        var dataTable = new DataTable();

        dataTable.RowChanged += new DataRowChangeEventHandler(OnDataTableRowChanged);

        using (var sqlCon = new SqlConnection(connectionString))
        {
            SqlDataAdapter adapter = new SqlDataAdapter();

            adapter.SelectCommand = new SqlCommand("select * from TableX", sqlCon);

            adapter.Fill(dataTable);
        }

        dataTable.RowChanged -= new DataRowChangeEventHandler(OnDataTableRowChanged);
    }

    static void OnDataTableRowChanged(object sender, DataRowChangeEventArgs e)
    {
        var table = (DataTable)sender;

        Console.WriteLine("line: " + e.Row[0] + ", RowCount: " + table.Rows.Count);
    }
}

1 个答案:

答案 0 :(得分:1)

对于COMMIT,它将为ADD触发一次。

检查e.Action它会为你提供被解雇的动作