У меня есть DataGridView
, который показывает список номеров деталей перекрестных ссылок, каждый с названием компании и номером перекрестной ссылки.Когда пользователь заканчивает редактирование ячейки, он автоматически отправляет обновление.Однако я, очевидно, не хочу, чтобы пустые перекрестные ссылки хранились в таблице, поэтому, если пользователь удаляет информацию из полей компании и чисел, я просто удаляю эту запись.Это нормально в конце SQL, но я удаляю строку из dgv.Всякий раз, когда вы пытаетесь удалить строку в конце редактирования, она выдает
Операция недопустима, поскольку она приводит к повторному вызову функции SetCurrentCellAddressCore.видел некоторые ресурсы в поиске, которые пролили немного света на проблему.Я не могу найти способ обойти это.Я попытался dgv.Rows.Remove()
, и я попытался просто запустить мой метод FillDGV()
, который очищает dgv в начале, но кажется, что у него есть некоторые серьезные проблемы при удалении родительской строки ячейки, которая запускает событие EndEdit
,Я пробовал некоторые вещи, которые предлагали другие люди, например, выделение другого элемента управления перед удалением и изменение текущей ячейки, но ни одна из них не работала.Кто-нибудь может предложить решение этой проблемы?
private void viewCrossRef_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
string number = null;
string company = null;
if (viewCrossRef["CrossReference", e.RowIndex].Value != null)
number = viewCrossRef["CrossReference", e.RowIndex].Value.ToString();
if (viewCrossRef["Company", e.RowIndex].Value != null)
company = viewCrossRef["Company", e.RowIndex].Value.ToString();
basePart.CrossReferences[e.RowIndex].Company = company;
basePart.CrossReferences[e.RowIndex].CrossReferenceNumber = number;
if (String.IsNullOrEmpty(company) && String.IsNullOrEmpty(number))
viewCrossRef.Rows.RemoveAt(e.RowIndex);
basePart.UpdateCrossReferences();
}
DataTable
обновляется методом UpdateCrossReferences
.Умирает при удалении ряда.