У меня есть метод обновления моего DataGridView
в приложении Windows. этот метод работает. но когда я удаляю некоторую строку из Grid, возникло исключение и приложение закрыто.DataGridView Удаление исключения при обновлении данных
Это Refresh функция:
private void RefreshGrid()
{
try
{
picbx_Next.Enabled = false;
picbx_Previous.Enabled = false;
this.Cursor = Cursors.WaitCursor;
people = context.People
.Where(c => c.BranchPersons.FirstOrDefault().BranchId == _BranchId)
.Select(c => new OrderingData
{
CellPhone = c.CellPhone,
Id = c.Id,
Firstname = c.FirstName,
PersonDutyId = c.PersonDutyId,
Surname = c.SurName
})
.OrderByDescending(c => c.PersonDutyId)
.ToList();
lst = new BindingList<OrderingData>(people);
dgv_PeopleInBranch.DataSource = lst;
picbx_Next.Enabled = true;
picbx_Previous.Enabled = true;
this.Cursor = Cursors.Default;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
И это моя функция удаления:
private void dgv_PeopleInBranch_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
if (dgv_PeopleInBranch.Rows.Count > 0)
{
if (ReadyForDelete)
{
Guid Id = new Guid(e.Row.Cells["Id"].Value.ToString());
DeleteBranchPerson(Id);
}
else
{
e.Cancel = true;
}
}
}
Когда функция Delete успешно выполнить, я называю RefreshGrid()
метод для загрузки новых данных из базы данных. Но у меня есть исключение в моем файле program.cs
! Обратите внимание, что функция обновления работает полностью без ошибок при загрузке формы.
Это окончательное Исключение:
Индекс находился вне диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: индекс
Где моя ошибка и как я могу найти, какой контроль поднял это исключение и исправить?
Есть ли у вас события, связанные с DataGridView? Если это так, поместите контрольные точки в них, чтобы наблюдать, вызывается ли один или несколько вызываемых при изменении источника данных сетки. Возможно, эти события содержат код, который неправильно обрабатывает изменение источника данных. – Steve
Да. Событие, связанное с сеткой и я, шаг за шагом проверяет использование точки останова для этих методов. Все они успешно завершены, но, наконец, у меня есть это исключение. Я не знаю, какой метод или контроль поднял эту ошибку? – Mojtaba
Я читал о вызове 'dgv_PeopleInBranch.EndEdit();' или 'this.BindingContext [this.dgv_PeopleInBranch.DataSource] .EndCurrentEdit();' перед изменением DataSource. – Steve