Удаление строки базы данных через C # DataGridView? - PullRequest
1 голос
/ 17 марта 2011

В приложении WinNET .NET 3.5 у меня есть компонент DataGridView, который использует TableAdapter для базы данных MySQL.

Я могу добавить новую запись, добавив код в BindingSource_AddingNewсобытие.

private void someBindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
    DataRow ThisDataRow = ((DataRowView)((BindingSource)sender).Current).Row;
    if (ThisDataRow.RowState == DataRowState.Added)
    {
        someTableAdapter.Insert(ThisDataRow.ItemArray[1].ToString());
    }
}

и я могу обновить запись, добавив код к событию BindingSource_CurrentItemChanged.

private void someBindingSource_CurrentItemChanged(object sender, EventArgs e)
{
    DataRow ThisDataRow = ((DataRowView)((BindingSource)sender).Current).Row;
    if (ThisDataRow.RowState == DataRowState.Modified)
    {
        someTableAdapter.Update(ThisDataRow);
    }
}

Как мне обработать событие удаления?

** ОБНОВЛЕНИЕ 1 **

Для обработки события удаления была добавлена ​​кнопка (вам нужно выбрать строку перед нажатием кнопки):

private void btnDelete_Click(object sender, EventArgs e)
    {
        Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);
        if (selectedRowCount > 0)
        {
            for (int i = 0; i < selectedRowCount; i++)
            {
                    //delete from database
                    someTableAdapter.Delete(Convert.ToUInt16(dataGridView1.Rows[dataGridView1.SelectedRows[i].Index].Cells[0].Value));
                    //refresh datagridview
                    this.dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[i].Index);

             }
         }

1 Ответ

2 голосов
/ 18 марта 2011

Вы ищете DataGridView.UserDeletingRow событие.

private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
    // It is a cancellable event, you could cancel the delete on certain conditions.
    e.Cancel = true;

}
...