在不触发ColumnChanged事件的情况下将DataRow添加到DataTable

本文关键字:DataRow 添加 DataTable 情况下 ColumnChanged 事件 | 更新日期: 2023-09-27 18:00:21

有没有一种方法可以在不触发DataTableColumnChanged事件的情况下将现有的DataRow添加到DataTable?我有一个连接到ColumnChanged事件的事件处理程序,我想继续为表中的所有现有行运行该事件,但在将行添加到表中之前,我不希望它为新行激发(我不希望在添加行时激发)。

我试过:

table.ImportRow(rowToAdd); // causes the ColumnChanged event to fire

DataRow newRow = table.NewRow();
foreach (DataColumn col in table.Columns)
    newRow[col.ColumnName] = rowToAdd[col.ColumnName]; // causes the ColumnChanged event to fire
table.Rows.Add(newRow);

我已经找到了一个解决方案,可以将当前添加的行存储在哪里,并在事件处理程序中检查该值,但如果有一种方法可以在不触发事件的情况下添加行,那将是最好的。

在不触发ColumnChanged事件的情况下将DataRow添加到DataTable

您可以使用table.Rows.Add(params Object[] values);。例如

Object[] values = new Object[table.Columns.Count];
for (int i = 0; i < values.Length; i++)
   values[i] = rowToAdd[table.Columns[i].ColumnName]; // not sure if order is consistent
table.Rows.Add(values);