C#:无法通过行访问已删除的行信息 - 但我想阅读下一行

时间:2014-03-05 16:31:19

标签: c# datatable rowdeleting

获得标题显示的错误信息。但我想要的是从datatable读取一行,插入我的日历控件,然后删除该行,然后读取下一行,插入,然后删除下一行。

但是我收到了这个错误

以下是我的代码

for (int i = 0; i < dtRowCount; i++)
        {
            var tempName = tempDT.Rows[i]["IDENT"].ToString();

            c = new Contact();
            c.FirstName = tempDT.Rows[0]["IDENT"].ToString();
            c.Tag = tempDT.Rows[0]["EVENT_ID"].ToString();
            _calendar.Schedule.Contacts.Add(c);
            _calendar.Contacts.Add(c);

            for (int j = 0; j < dtRowCount; j++)
            {
                if (tempName == tempDT.Rows[j]["TAG_IDENT"].ToString())
                {
                    #region Appointment

                    var app = new Appointment();

                    app.HeaderText = tempDT.Rows[i]["NAME"].ToString();

                    exlStarTime = tempDT.Rows[i]["START"].ToString();
                    DateTime myStartDate = DateTime.ParseExact(exlStarTime,
                        "dd-MMM-yy hh.mm.ss.fffffff00 tt",
                        System.Globalization.CultureInfo.InvariantCulture);

                    exlEndTime = tempDT.Rows[i]["END"].ToString();
                    DateTime myEndDate = DateTime.ParseExact(exlEndTime,
                        "dd-MMM-yy hh.mm.ss.fffffff00 tt",
                        System.Globalization.CultureInfo.InvariantCulture);

                    app.Tag = tempDT.Rows[i]["TYPE_CODE"].ToString();
                    app.StartTime = myStartDate;
                    app.EndTime = myEndDate;

                    app.Contacts.Add(c);
                    _calendar.Schedule.Items.Add(app);

                    ItemStyle style = app.Style;
                    style.HeaderTextColor = Color.White;
                    style.Brush.Image = "none";
                    switch (tempDT.Rows[i]["EVENT_TYPE_CODE"].ToString())
                    {
                        case event1Color:
                            style.Brush.Color = Color.OrangeRed;
                            break;

                        case event2Color:
                            style.Brush.Color = Color.Orange;
                            break;

                        case event3Color:
                            style.Brush.Color = Color.DodgerBlue;
                            break;
                    }

                    #endregion

                    tempDT.Rows[j].Delete();
                    //j = j - 1;
                    j = j + 1;
                }
            }
        }

大thx

2 个答案:

答案 0 :(得分:1)

我认为问题是由于您正在修改您正在迭代的Collection。 解决它的最简单方法是分两步完成。 首先,在日历中插入所需的所有内容,然后在完成插入后,开始删除它们。

答案 1 :(得分:0)

这是因为删除所有行后需要调用AcceptChanges()方法。

tempDT.AcceptChanges();

我希望这对你有用!