Что рекомендуетсяДолжен ли AcceptChanges() вызываться каждый раз, когда добавляется новая строка?
while (reader.Read())
{
table.Rows.Add(
new object[] { reader[0], reader[1], reader[2], reader[3] }
);
table.AcceptChanges();
}
или
while (reader.Read())
{
table.Rows.Add(
new object[] { reader[0], reader[1], reader[2], reader[3] }
);
}
table.AcceptChanges();
Примечание где table.AcceptChanges помещается.
EDIT 1
Вот код блока:
protected void Page_Load(object sender, EventArgs e)
{
IDataReader reader = cust.GetCustomerOrderSummary("99999");
using (DataSet ds = new DataSet())
{
using (DataTable table =
new DataTable { TableName = "OrderSummary" })
{
DataColumn idColumn = table.Columns.Add("number", typeof(int));
table.Columns.Add("name", typeof(string));
table.Columns.Add("quantity", typeof(int));
table.Columns.Add("prev_quantity", typeof(int));
table.PrimaryKey = new DataColumn[] { idColumn };
while (reader.Read())
{
table.Rows.Add(
new object[]{ reader[0], reader[1], reader[2], reader[3] }
);
table.AcceptChanges();
}
ds.Tables.Add(table);
rptCustomerOrder report =
new rptCustomerOrder { DataSource = ds };
ReportViewer1.Report = report;
}
}
}
EDIT 2
После прочтения статьи MSDN here я решил поместить AcceptChanges () вне цикла на основе следующих s (из статьи):
Вызов AcceptChanges на уровне DataTable вызывает метод AcceptChanges для каждого вызова DataRow.
Что такое ваш настольный объект? – JoshBerke
Какова стоимость AcceptChanges? Это нулевая стоимость? Тогда это не имеет значения? Если стоимость AcceptChanges отлична от нуля (т. Е. Требуется время, делает I/O или что-то еще), тогда это имеет значение. –