Member 14802172 Ответов: 1

Как я могу удалить выбранную строку из datagridview и обновить свою базу данных?


У меня есть приложение, в котором мне нужно использовать кнопки в datagridview, чтобы удалить выбранную строку. Я знаю, как это сделать, но мне это нужно также для обновления базы данных. Вот с чем я борюсь.

Что я уже пробовал:

Так что это то, что у меня есть, он действительно удаляет выбранную строку, когда приложение запущено, но как только приложение закрыто и запущено снова, удаленная строка возвращается.
private void RecordsdataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)

if (RecordsdataGridView.Columns[e.ColumnIndex].Name == "Delete")
{
DialogResult result = MessageBox.Show("Are you sure you want to delete this patient report?", "Conformation", MessageBoxButtons.YesNo);

                if (result == DialogResult.Yes)

                {
                int rowIndex = RecordsdataGridView.CurrentCell.RowIndex;

               RecordsdataGridView.Rows.RemoveAt(rowIndex);
}

         else if (result == DialogResult.No)

                {
                    Application.Exit();
                }
}

1 Ответов

Рейтинг:
1

Garth J Lancaster

Один из способов сделать это-перед этой строкой

RecordsdataGridView.Rows.RemoveAt(rowIndex);

считайте необходимые (индексные) данные из выбранной строки DataGrid и используйте их для выполнения операции "удалить из таблицы, где id = index-from-datarow" - убедившись, что вы выполняете SQL правильно, то есть без SQL-инъекции, используйте параметризованный оператор SQL.

Если строка DataGrid не имеет индекса или чего-то еще, чтобы сформировать уникальный оператор delete, то я предлагаю вам изменить исходный запрос, чтобы получить его, но сделать столбец DataGrid скрытым, чтобы он не отображался

Вероятно, лучшим способом достижения обновления/удаления "базовой" таблицы базы данных из DataGridView является "привязка" DataGridView к источнику данных (таблице БД)-вот ссылка, которая может помочь проиллюстрировать это Обновления Базы Данных Из DatagridView[^]