Перейти к содержимому

Как в datagridview удалить строку

  • автор:

Как в datagridview удалить строку

Рейтинг (т): нет

очень простое задание но возникли трудности.
нужно сделать удаление записи из DataGridView по нажатию на кнопку.Удаление должно происходить так: сначала выделяем на DataGridView строку которую хотим удалить, а потом по нажатию на кнопку удаляем. я вроде написал. не знаю почему не работает? ничего не происходит. Добавление строки работает. посмотрите плиз

// Удаление записи

private void btnDelete_Click(object sender, EventArgs e)

if (this.dataGridView.SelectedRows.Count > 0 &&

this.dataGridView.SelectedRows[0].Index !=

this.dataGridView.Rows.Count — 1)

this.dataGridView.Rows.RemoveAt(this.dataGridView.SelectedRows[0].Index);

// Добавление записи

private void btnAdd_Click(object sender, EventArgs e)

this.dataGridView1.Rows.Add();

Сообщ. #2 , 13.01.10, 15:27

Full Member

Рейтинг (т): 35

&&this.dataGridView.SelectedRows[0].Index !=this.dataGridView.Rows.Count — 1

Сообщ. #3 , 13.01.10, 15:37

Full Member

Рейтинг (т): нет

нет не работает(

Сообщ. #4 , 13.01.10, 16:00

Full Member

Рейтинг (т): 22

Скорее всего, проблема в том, что на момент удаления не выделено ни одной строки Строка считается выделенной, если она выделена вся. Добиться этого можно, щелкнув на RowHeader слева от строки, либо установить DataGridView.SelectionMode = FullRowSelect.
Вот это:

&&this.dataGridView.SelectedRows[0].Index !=

this.dataGridView.Rows.Count — 1

Data Grid View. User Deleting Row Событие

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

Происходит, когда пользователь удаляет строку из элемента управления DataGridView.

public: event System::Windows::Forms::DataGridViewRowCancelEventHandler ^ UserDeletingRow;
public event System.Windows.Forms.DataGridViewRowCancelEventHandler UserDeletingRow;
member this.UserDeletingRow : System.Windows.Forms.DataGridViewRowCancelEventHandler 
Public Custom Event UserDeletingRow As DataGridViewRowCancelEventHandler 
Тип события

Примеры

В следующем примере кода показано, как использовать UserDeletingRow событие для отмены удаления строк из DataGridView , если начальная строка баланса включена в выделенный фрагмент. Этот пример является частью более крупного примера, доступного в событии SelectionChanged .

private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) < DataGridViewRow startingBalanceRow = DataGridView1.Rows[0]; // Check if the Starting Balance row is included in the selected rows if (DataGridView1.SelectedRows.Contains(startingBalanceRow)) < // Do not allow the user to delete the Starting Balance row. MessageBox.Show("Cannot delete Starting Balance row!"); // Cancel the deletion if the Starting Balance row is included. e.Cancel = true; >> 
Private Sub UserDeletingRow(ByVal sender As Object, _ ByVal e As DataGridViewRowCancelEventArgs) _ Handles DataGridView1.UserDeletingRow Dim startingBalanceRow As DataGridViewRow = DataGridView1.Rows(0) ' Check if the starting balance row is included in the selected rows If DataGridView1.SelectedRows.Contains(startingBalanceRow) Then ' Do not allow the user to delete the Starting Balance row. MessageBox.Show("Cannot delete Starting Balance row!") ' Cancel the deletion if the Starting Balance row is included. e.Cancel = True End If End Sub 

Комментарии

Это событие можно отменить, чтобы предотвратить удаление строк.

Дополнительные сведения об обработке событий см. в разделе Обработка и создание событий.

Как удалить строку из DataGridView, что бы после рефреша строка с таким ID больше не появлялась в списке?

Уточните вопрос. Напишите, как данные попадают в DataGridView. Они берутся из БД? Сделана привязка (binding)?

14 ноя 2015 в 18:08

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

если удалить все то так:

dataGridView1.Rows.Clear(); dataGridView1.Refresh(); 

если конкретную строчку то надо знать ее индекс

dataGridView1.Rows.RemoveAt(индекс строки); dataGridView1.Refresh(); 

можно удалить и имея объект row

dataGridView1.Rows.Remove(row); dataGridView1.Refresh(); 

Отслеживать
ответ дан 13 ноя 2015 в 11:02
2,508 2 2 золотых знака 12 12 серебряных знаков 25 25 бронзовых знаков

после такого удаления когда снова запускаю программу удаленная строка снова появляется,нужно что бы не появился

13 ноя 2015 в 16:37

дополнительно вам надо ее еще и из базы удалить. Необходимо знать уникальный идентификатор записи в базе (обычно Id), выполнить запрос на удаление

13 ноя 2015 в 16:39

datagridview.databind(); 

вставляешь в любой серверный обработчик

Отслеживать
51.4k 86 86 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
ответ дан 13 ноя 2015 в 11:50
one__for__one one__for__one
13 3 3 бронзовых знака
а по конкретнее?
13 ноя 2015 в 16:38
Постарайтесь писать более развернутые ответы. Поясните, на чем основано ваше утверждение?
14 ноя 2015 в 7:34

 for (int i = 0; i < arr.Length; i++) < for (int j = 0; j < arr.Length; j = j++) < dataGridView2.Rows[i].Cells[j].Value = null; >> 

Отслеживать
ответ дан 7 мая 2023 в 0:29
Алберт Скоростяк Алберт Скоростяк
1 1 1 бронзовый знак

  • c#
  • winforms
  • datagridview
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как удалить выбранную строку в Datagrid?

FoggyFinder

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

После удаления из DataGrid вы хотите одновременно удалить и из базы, или синхронизацию делаете после завершения работы?

Anton_repr @Anton_repr Автор вопроса
Foggy Finder, мне необходимо одновременно удалить и из базы, и из DataGrid

FoggyFinder

Foggy Finder @FoggyFinder

или, вам придется, после каждого изменения извлекать актуальную информацию из БД.

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

public class Ingredient < public int ID < get; >public string Name < get; >public Ingredient(int id, string name) < Name = name; >>

и тогда нужно будет изменить метод FillGrid на IEnumerable GetIngedients().

Ingredients.Clear(); foreach(var ingredient in GetIngredients()) Ingredients.Add(ingredient);

но лучше поискать метод-расширения AddRange для ObservableCollection чтобы шустрее работало.

SpacePurr

Anton_repr, склоняюсь к применению Entity Framework как написал Foggy Finder выше, но у меня получилось решить вашу задачу

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *