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

Add a DataRow to a DataTable without the ColumnChanged event firing

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

我试过:

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

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

您可以改用 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);