Как удалить выбранную строку из таблицы данных и базы данных - PullRequest
4 голосов
/ 04 апреля 2011

Идея состоит в том, что строка, выбранная при удалении, удаляется из таблицы данных, базы данных и затем таблицы данных обновляется. Я предполагаю, что это должно быть сделано с SQL, но как бы вы связали эту sqlcommand типа text с кодом удаления с этой конкретной строкой? База данных состоит из одной таблицы, к которой привязана сетка данных.

Кнопка удаления:

private void btnBookRecord_Click(object sender, EventArgs e)
{
    if (this.BooksGrid.SelectedRows.Count > 0)
    {
        foreach (DataGridViewRow dgvrCurrent in BooksGrid.SelectedRows)
        {
            if (dgvrCurrent == BooksGrid.CurrentRow)
            {
                BooksGrid.CurrentCell = null;
            }

            // Delete row code here
        }
    }
}

Ответы [ 3 ]

6 голосов
/ 04 апреля 2011

По какой-то причине представление данных не обновляется, хотя я скопировал код обновления из кнопки добавления, которая работает.Но он удаляет запись из базы данных.

private void deleteRecord()
{
    if (BooksGrid.SelectedRows.Count > 0)
    {
        int selectedIndex = BooksGrid.SelectedRows[0].Index;

        int rowID = int.Parse(BooksGrid[0, selectedIndex].Value.ToString());
        string sql = "DELETE FROM Table1 WHERE RowID = @RowID";

        SqlCommand deleteRecord = new SqlCommand();
        deleteRecord.Connection = Booksconnection;
        deleteRecord.CommandType = CommandType.Text;
        deleteRecord.CommandText = sql;

        SqlParameter RowParameter = new SqlParameter();
        RowParameter.ParameterName = "@RowID";
        RowParameter.SqlDbType = SqlDbType.Int;
        RowParameter.IsNullable = false;
        RowParameter.Value = rowID;

        deleteRecord.Parameters.Add(RowParameter);

        deleteRecord.Connection.Open();

        deleteRecord.ExecuteNonQuery();

        deleteRecord.Connection.Close();

        booksDataset1.GetChanges();

        sqlDataAdapter1.Fill(booksDataset1.Videos);
    }
}
3 голосов
/ 04 апреля 2011

Если вы разрешите только один выбор в DataGridView, вы можете сделать это.

Скажем, первый столбец в DataGridView - это начальное значение строки в базе данных.

if (BooksGrid.SelectedRows.Count > 0)
{
     int selectedIndex = BooksGrid.SelectedRows[0].Index;

     // gets the RowID from the first column in the grid
     int rowID = int.Parse(BooksGrid[0, selectedIndex].Value.ToString());

     string sql = "DELETE FROM Table1 WHERE RowID = @RowID";

     // your code for deleting it from the database

     // then your code for refreshing the DataGridView
}
0 голосов
/ 23 июля 2014
DataGridView datagridview1;

datagridview1.Rows.remove(datagridview1.SelectedRows[0]);
...