2017-10-05 69 views
0

我的形式:删除和数据集的更新行(C#)

enter image description here

我想在数据集中删除所选行。按钮“删除”有这个处理程序:

  int indexForDeleting = 0; 
      bool reason = true; 
      foreach (DataGridViewRow item in this.dataGridView1.SelectedRows) 
      { 
       this.dataGridView1.Rows.RemoveAt(item.Index); 
       if (reason) 
       { 
        indexForDeleting = item.Index; 
        reason = false; 
       } 
      } 
      dataSet11.flight.Rows.Remove(dataSet11.flight.Rows[Math.Abs(indexForDeleting)]); 
      dataSet11.flight.AcceptChanges(); 

选定的行只在DataGridView中删除,但我想在DataGridView和DataSet中删除行。

回答

0

如果该网格绑定到DataTable,那么删除该表的DataRow,而不是网格行。类似这样的:

int rowIdx = dataGridView1.CurrentCell.RowIndex; 
DataRowView drv = (DataRowView)dataGridView1.Rows[rowIdx].DataBoundItem; 
DataRow dr = drv.Row; 
dr.Delete(); 

这将删除该行并更新网格。

+0

没有解决问题,行只删除datagridview – bsuart

+0

是的。 DataRow.Delete()将该行的RowState属性设置为Deleted。当你将DataSet/DataTable更新到数据库时,通常使用适配器,它将根据RowState添加/更新/删除行。 –