Событие добавления строки в DataGridView - PullRequest
11 голосов
/ 16 апреля 2010

Я использую DataGridView и привязываю список к источнику данных.

У меня уже есть нужные столбцы, и я точно отображаю поля. Я пытаюсь сделать что-то вроде RowAdded или RowDataBound (как в aspx GridView).

Единственное событие, которое я обнаружил, это RowsAdded, но независимо от того, сколько предметов у меня есть, оно срабатывает только 4 раза при первом связывании, а дважды - со значениями

e.RowCount: 1 e.RowIndex: 0 e.RowCount: [n-1] e.RowIndex: 1 * где n - количество моих предметов

Есть ли способ, которым я могу получить ручку для каждого элемента?

РЕДАКТИРОВАТЬ: без изменения DataSource = метод связывания

Ответы [ 2 ]

20 голосов
/ 02 октября 2010

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

private void DataGridView1_RowsAdded(object sender, System.Windows.Forms.DataGridViewRowsAddedEventArgs e)
{
    for (int index = e.RowIndex; index <= e.RowIndex + e.RowCount - 1; index++) {
        DataGridViewRow row = DataGridView1.Rows[index];

        // Do something with the added row here
        // Raise a custom RowAdded event if you want that passes individual rows.
    }
}

Если вы хотите, вы можете унаследовать сетку данных и создать собственную сетку, которая генерирует событие «RowAdded» внутри цикла выше.

0 голосов
/ 15 ноября 2017

Самый простой способ для меня - использовать System.Windows.Forms.BindingSource. Добавьте к этому список, а затем используйте BindingSource в качестве источника данных сетки. Это тогда действует как посредник для сетки и данных.

Есть несколько событий, которые затем можно использовать из bindingsouce. Одним из них является AddingNew. Вы также можете использовать его для захвата добавляемых или удаляемых строк, а также некоторых других вещей.

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