当前位置:  开发笔记 > 小程序 > 正文

每次添加新行时都应该调用AcceptChanges()吗?

如何解决《每次添加新行时都应该调用AcceptChanges()吗?》经验,为你挑选了1个好方法。

这是推荐的

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的位置.


编辑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;
        }
    }
}

编辑2
在阅读了MSDN文章后,我决定根据以下语句(来自文章)将AcceptChanges()置于循环之外:

在DataTable级别调用AcceptChanges会导致调用每个DataRow的AcceptChanges方法.

Furqan Safda.. 7

呼唤AcceptChanges加入新行实际上会变成后DataRowState新添加的DataRowAddedUnchanged.如果你使用它,你可能会失去对新添加的行的跟踪以及持续时间.ADO.NET无法识别需要在数据库中插入的行.因此,明智地选择此选项,您可能甚至不需要它.



1> Furqan Safda..:

呼唤AcceptChanges加入新行实际上会变成后DataRowState新添加的DataRowAddedUnchanged.如果你使用它,你可能会失去对新添加的行的跟踪以及持续时间.ADO.NET无法识别需要在数据库中插入的行.因此,明智地选择此选项,您可能甚至不需要它.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有