RowChanged Event Firing on Unchanged Rows
Index
‹
.NET Development
‹
.NET Framework Data Access and Storage
Author
Message
Ladislav Svatos
Posted: .NET Framework Data Access and Storage, RowChanged Event Firing on Unchanged Rows
Top
It seems that the RowChanged event is fired on unchanged rows. I wrote a small program to confirm that.
using System;
using System.Data;
using System.Text;
namespace Test
{
public class EventTest
{
const string IdColumnName = "id";
const string DataTimeColumnName = "DateTime";
DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable("table");
static public void Main(string[] args)
{
EventTest eventTest = new EventTest();
}
public EventTest()
{
dataSet.Tables.Add(dataTable);
DataColumn column = new DataColumn(IdColumnName, System.Type.GetType("System.Int32"));
column.AutoIncrement = true;
column.AutoIncrementSeed = 1;
column.AutoIncrementStep = 1;
column.ReadOnly = true;
dataTable.Columns.Add(column);
column = new DataColumn(DataTimeColumnName, System.Type.GetType("System.DateTime"));
column.DefaultValue = DateTime.Now;
dataTable.Columns.Add(column);
dataTable.RowChanged += new DataRowChangeEventHandler(dataTable_RowChanged);
DataRow row = dataTable.NewRow();
dataTable.Rows.Add(row);
dataSet.AcceptChanges();
row = dataTable.NewRow();
dataTable.Rows.Add(row);
dataSet.AcceptChanges();
}
private void dataTable_RowChanged(Object sender, DataRowChangeEventArgs e)
{
Console.WriteLine("Row Changed Event - " + " action:" + e.Action +
" row id:" + e.Row[IdColumnName] + " row state:" + e.Row.RowState);
}
}
}
The program output:
Row Changed Event - action:Add row id:1 row state:Added
Row Changed Event - action:Commit row id:1 row state:Unchanged
Row Changed Event - action:Add row id:2 row state:Added
Row Changed Event - action:Commit row id:1 row state:Unchanged
Row Changed Event - action:Commit row id:2 row state:Unchanged
Of course I can ignore the event when the row state is unchanged, but for tables with many rows this can cause a serious performance penalty.
Is there any way to prevent this behaviour
TIA
Ladislav
.NET Development30
Index
‹
.NET Development
‹
.NET Framework Data Access and Storage