如何删除选定的DataGridViewRow并更新连接的数据库表?

Woo*_*ody 46 c# datagridview tableadapter winforms

我有一个DataGridViewWindows窗体应用程序的控件(用C#编写).

我需要的是:当用户选择DataGridViewRow,然后单击"删除"按钮时,应该删除该行,接下来,需要使用表适配器更新数据库.

这是我到目前为止:

private void btnDelete_Click(object sender, EventArgs e)
{
    if (this.dataGridView1.SelectedRows.Count > 0)
    {
        dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index);
    }                
}
Run Code Online (Sandbox Code Playgroud)

此外,这只删除一行.我希望用户可以选择多行.

Nav*_*adi 71

此代码删除以下所选项dataGridView1:

 private void btnDelete_Click(object sender, EventArgs e)
 {
     foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
     {
         dataGridView1.Rows.RemoveAt(item.Index);
     }
 }
Run Code Online (Sandbox Code Playgroud)

  • 最佳实践说使用for循环而不是foreach循环并从末尾向后迭代.这有助于您在迭代期间编辑时保留索引并避免出现问题. (9认同)
  • 通常,修改与我们迭代的对象相关的对象并不总是安全的,索引也可能不会更新. (7认同)

小智 22

private void buttonRemove_Click(object sender, EventArgs e)
{
    foreach (DataGridViewCell oneCell in dataGridView1.SelectedCells)
    {
        if (oneCell.Selected)
            dataGridView1.Rows.RemoveAt(oneCell.RowIndex);
    }
}
Run Code Online (Sandbox Code Playgroud)

删除索引在选定单元格中的行.因此,选择任何单元格,将删除其对应的行.


ser*_*nko 10

我写了以下代码,请看一下:

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
    if (!row.IsNewRow) dataGridView1.Rows.Remove(row);
Run Code Online (Sandbox Code Playgroud)

使用Index所选行仍然可以工作; 看看下面的代码是否能解决问题:

int selectedCount = dataGridView1.SelectedRows.Count;           
while (selectedCount > 0)
{
    if (!dataGridView1.SelectedRows[0].IsNewRow)
        dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
    selectedCount--;
}
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助.