0

SqlDataAdapterでデータを入力しながら、RowChangedイベントをリッスンしたいと思います。動作しますが、データが変更されていないにもかかわらず、イベントが2回発生しました。誰かが私に理由を説明できますか?一度だけレイズするにはどうすればよいですか?

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);
    }
}
4

1 に答える 1

1

ADDの場合は1回、COMMITの場合は1回起動します。

e.Actionを確認すると、起動されたアクションが表示されます

于 2012-07-24T06:23:02.617 に答える