Как проверить, добавлена ​​ли какая-либо строка в Datagridview - PullRequest
1 голос
/ 02 марта 2012

Я использую элемент управления Datagridview для winform и источник привязки для данных. Данные заполняются в bindingsource и соответственно заполняется сетка данных. Я ищу событие или что-то подобное, которое сработает при добавлении строки из bindingsource в представление данных.

Я хочу выполнить некоторые операции над добавленной строкой. Я пытался с событием RowsAdded, но e.RowIndex не извлекается должным образом.

Edit1: Допустим, у меня есть 10 записей в таблице базы данных. Я извлекаю их в bindingsource и использую bindingsource в качестве источника данных для Datagridview. Теперь, добавляя строку в Datagridview, я хочу выполнить некоторые операции с пользовательским интерфейсом над Datagridview. Я использовал событие RowsAdded, но оно всегда дает мне RowIndex как 0 или 1. Я также пробовал цикл foreach над RowsCount, и если я отлаживаю код, поток выполнения соответствует ожиданиям, но в интерфейсе пользователя это не отражается. Я вызвал Datagridview1.refresh () после того, как все сделано.

Не могли бы вы помочь мне получить это?

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Когда пользователь добавляет новую строку, используя строку для новых записей, значение DataGridViewRowsAddedEventArgs.RowIndex в обработчике для этого события равно индексу нового местоположения строки для новых записей, которое на единицу больше, чемстрока только что добавлена.

Однако, когда вы добавляете строки программным способом, значение RowIndex является индексом первой добавленной строки.

private void dataGridView1_NewRowNeeded(object sender,
    DataGridViewRowEventArgs e)
{
    newRowNeeded = true;
}

private void dataGridView1_RowsAdded(object sender,
     DataGridViewRowsAddedEventArgs e)
{
    if (newRowNeeded)
    {
        newRowNeeded = false;
        numberOfRows = numberOfRows + 1;
    }
}

приведет вас к точной строке, ссылающейся msdn строка ссылки

0 голосов
/ 02 марта 2012

В зависимости от операций, которые вы хотите выполнить после привязки, вы можете использовать событие Control.BindingContextChanged для итерации по строкам сетки:

private void dataGridView1_BindingContextChanged(object sender, EventArgs e) 
{
    foreach (var row in dataGridView1.Rows) {

    }
}

Если это не работает, можете ли вы сказать, что именно вы пытаетесь выполнитьпосле переплета?

...