![]()
Active member
Удаление строки в DataGridView
Из этой статьи Вы узнаете, как удалить строку в DataGridView.
И так предположим, что у нас есть DataGridView (dgv), который содержит 4 строки (записи).
Давайте рассмотрим и разберем на простых примерах несколько самых распространённых задач связанных с удалением строк.
Удаление строки в DataGridView по индексу
В качестве первой задачи рассмотрим пример, в котором необходимо удалить строку в DataGridView по указанному в текстовом поле индексу.
Решить данную задачу можно несколькими способами, например, мы можем воспользоваться методом RemoveAt, который в качестве единственного параметра принимает индекс удаляемой строки. Не забывайте, что индекс первой строки всегда равен нулю!
И так давайте, например, удалим строку с индексом два.
dgv.Rows.RemoveAt(int.Parse(textBox1.Text));
результат
Удаление строки в DataGridView по значению
Во второй задаче нам потребуется удалить в DataGridView строку, которая содержит указанное в текстовом поле значение.
Например, рассмотрим простую задачу, в котором пользователь хочет удалить строку, в которой колонка lastname содержит значение (фамилию) Petrov.
Сначала, перебирая все строки, мы находим указанное пользователем значение, а затем, с помощью метода RemoveAt, уже знакомого нам по предыдущему примеру, удаляем полученную строку в DataGridView. При этом чтобы получить индекс текущей строки, мы используем свойство Index.
Так же не забывайте указывать оператор break, так как цикл, не смотря на то, что строка уже будет найдена и удалена, всё равно будет
продолжен!
Удаление выделенной строки в DataGridView
И последняя задача, в которой нам необходимо удалить выделенную строку в DataGridView.
При решении данной задачи есть два важных момента, на которые стоит обратить внимание. Во-первых, по умолчанию выделение всей строки в DataGridView происходит только при нажатии на самый первый (левый) столбец.
Если мы точно знаем, что пользователь будет использовать такой способ выделения строк, то мы можем удалить выделенную строку в DataGridView, например, воспользовавшись свойством SelectedRows.
В предыдущих примерах для удаления строк мы использовали метод RemoveAt, в этом примере рассмотрим метод Remove, который так же позволяет удалить любую строку в DataGridView, но при этом нам не нужно указывать индекс, а достаточно просто в качестве параметра передать текущую строку.
Но, многие пользователи не знают о выше приведенном способе и часто выделяют строку, просто нажимая на любую ячейку.
В таком случае выше приведенное решение не подходит, так как нам теперь нужно отловить не выделенную строку, а выделенную ячейку. Это мы можем сделать, например следующим образом:
В результате у нас получается два метода для решения одной задачи.
На самом деле есть более удобное решение, которое позволяет решить сразу обе задачи. В DataGridView существует свойство CurrentRow, которое позволяет автоматически определить текущую строку, при чём не важно выделил строку пользователь, нажав на ячейку или на самый левый столбец.
Например, воспользуемся данным свойством и удалим, к примеру, выделенную третью строку.
На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.
Сейчас разрабатываю приложение, которое работает с базой данных и производит вывод информации в элемент DataGridView . И на одном из этапов разработки мне понадобилось очистить весь DataGr >
Начнем с того, что метод Clear() не работает.
Тогда на помощь приходит цикл:
Производим удаление последней записи до тех пор, пока количество записей не будет равно нулю.
Как подсказали в комментариях, происходило это потому, что вероятно был биндинг с DataSource .
В таком случае стоит попробовать следующий вариант:
Но сейчас я бы предпочел получить BindingSource и очистить его.
Вот так нужно очищать DataGr >Clear() не срабатывает. Вот такой своеобразный клининг получился.
Идея состоит в том, что строка, выбранная при удалении, удаляется из datagridview, базы данных, а затем обновляется datagridview. Я предполагаю, что это должно быть сделано с SQL, но как бы вы связали это sqlcommand текста типа с кодом удаления с этой конкретной строкой? База данных состоит из одной отдельной таблицы, и привязка к ней привязана.
По какой-то причине datagridview не будет обновляться, хотя я скопировал код обновления из кнопки добавления, которая работает. Но он удаляет запись из базы данных.
Если вы разрешаете только один выбор в DataGridView, вы можете сделать это.
Скажем, что первый столбец в DataGridView является семенем идентификации строки в базе данных.