Windows forms datagridview как удалить строку



Статья Как удалить строку в DataGridView в языке С#

Удаление строки в 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, которое позволяет автоматически определить текущую строку, при чём не важно выделил строку пользователь, нажав на ячейку или на самый левый столбец.

Например, воспользуемся данным свойством и удалим, к примеру, выделенную третью строку.

На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.

Источник

How to delete selected rows from a DataGridView?

I have a DataGridView and a Button . If rows are selected I want to delete them by clicking the button. I tried a couple of commands like RemoveAt , SelectedRows etc., but nothing did work. How can I solve that?

I tried something like:

but the RemoveAt method does only accept integers. Before I tried it with Selected Cells but then he delets all rows because there is always a cell selected.

7 Answers 7

Trending sort

Trending sort is based off of the default sorting method — by highest score — but it boosts votes that have happened recently, helping to surface more up-to-date answers.

It falls back to sorting by highest score if no posts are trending.

Switch to Trending sort

If you just want to remove the selected rows from the DataGridView this should do it:

Your code didn’t work because you’ve used RemoveAt(rows) but RemoveAt accepts only the index of the row which you want to remove. You are passing a DataGridViewSelectedRowCollection to it. You can get the index of a row via DataGridViewRow.Index as shown above.

if you are using a list of model, following code could help:

Please Try this, hope it’s help

1. To enable delete , set the AutoGenerateDeleteButton to true and specify the delete command in the SqlDataSource.

2. Here we are trying to display a confirmation message before deleting the specified row. In order to doing this we have to write a small Javascript code for display confirmation message.

3. We have to call this Javascript function on OnClientClick event of the delete LinkButton.

Источник

Удалить строчки из DataGridView по определенному условию

Есть DataGridView в котором есть несколько строк, требуется удалить строки с определенным значением.

Я пробовал через foreach и через for проходить по всем строкам, но после удаления одной строки происходит сдвиг в индексации и при последующем обхождении что-то может не удалиться.

Получается, что бы правильно удалить, я должен обойти весь DataGridView и собрать все объекты в List, а потом через foreach по этому List кидать элементы в DataGridView.Rows.Remove(row) ? Или можно как-то иначе?

3 ответа 3

DataGridView рассчитан в большей степени на привязку внешних данных, чем на ручное управление содержимым.

С циклом foreach действительно будет проблема, т.к. он не учитывает, что коллекция, для которой он выполняется, будет изменена в процессе выполнения. Так что этот вариант отпадает сразу.

В прямом цикле for по индексам коллекции, при удалении элемента, нужно уменьшать значение счетчика на 1. Тогда следующий элемент будет выбираться правильно, без пропусков.

Обратный for , который у вас сработал, будет правильно работать без модификаций.

Ну и самый правильный вариант на мой взгляд, это все таки вносить изменения не в DataGridView , а в привязанную коллекцию, которая содержит отображаемые данные. Даже если это банальный List , то можно одним linq-запросом RemoveAll( ) решить вашу задачу в одну строчку кода.

Источник

Windows forms datagridview как удалить строку

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Ранее мы рассмотрели, как удобно загружать данные в приложении Windows Forms в элемент DataGridView через DataSet. Теперь определим полнофункциональную форму, через которую мы сможем производить все стандартные CRUD операции в базе данных.

Итак, определим форму, на которой будет элемент DataGridView и три кнопки для добавления, удаления и сохранения изменений. Форма в итоге будет выглядеть примерно следующим образом:

Код формы будет выглядеть следующим образом:

Здесь для добавления объекта мы будем обращаться к хранимой процедуре sp_CreateUser, которая была добавлена в базу данных в прошлой теме.

В конструкторе данные загружаются в DataSet, первая таблица которого устанавливается в качестве источника данных для dataGridView1:

Также в конструкторе устанавливается полное выделение строки и запрет на ручное добавление новых строк:

В обработчике кнопки добавления создается новая строка, которая добавляется в таблицу объекта DataSet. И так как мы ранее установили привязку к источнику данных, то автоматически новая строка также будет добавляться и в dataGridView1:

В обработчике кнопки удаления удаляются выделенные строки в dataGridView1. Опять же в силу привязки к источнику данных будет также происходить удаление и из таблицы в DataSet:

Для обновления на не нужна никакая кнопка, так как мы можем нажать на любую ячейку таблицы (кроме заблокированного для изменения столбца Id) и изменить в ней данные. Однако сами по себе добавление новой строки, удаление строк, изменение ячеек ни как автоматически не отразятся на базе данных. И чтобы бд синхронизировалась, пользователю надо будет нажать на кнопку сохранения, обработчик которой выглядит следующим образом:

Как в прошлой теме здесь устанавливается у адаптера команда на добавление InsertCommand и затем вызывается метод Update() . В итоге мы можем добавить несколько строк, удалить, изменить, и потом один раз мы нажмем на кнопку, и все изменения будут применены к базе данных.

Источник

How to disable the last blank line in DatagridView?

For C# Window Form, there is a tool called DataGridView.

If we use that to display data, it shows an extra line.

If we have 3 rows of data, it shows 4 rows. the 4th row is a blank row.

I wanna know how to disable it.. or hide it?

3 Answers 3

Trending sort

Trending sort is based off of the default sorting method — by highest score — but it boosts votes that have happened recently, helping to surface more up-to-date answers.

It falls back to sorting by highest score if no posts are trending.

Switch to Trending sort

Do it like this:

In the DataGridView properties (small arrow at the top right corner of the control) uncheck Enable Adding, or in the Properties window at the right side of the screen set AllowUserToAddRows to False.

From your Project [Design] view click on the DataGridView1 and from the (Properties) set it like this:

Linked

Related

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2022.9.20.42981

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

You may also like...