SetCurrentCellAddressCore DatagridView исключение - PullRequest
0 голосов
/ 07 июля 2011

У меня есть 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.Умирает при удалении ряда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...