【问题标题】:C# delete a single row in an SQL bound datagridviewC# 删除 SQL 绑定 datagridview 中的单行
【发布时间】:2023-03-16 21:52:01
【问题描述】:

我尝试了许多解决方案,声明只删除了一行,但在我的 VS2017 C# 中,从所选行到 DataGridView 末尾的所有行都被删除。如果我有 5 行并删除了第 4 行,则第 4 行和第 5 行都将被删除。我可以毫无问题地添加行,我可以删除表并创建表,但删除单行数据似乎不可行。

请帮忙,我已经在这几天了......

private void DDataTable_UserDeletedRow( object sender, DataGridViewRowEventArgs e )
{
  try
  {
    // Want the last operation to be completed
    dbDataSetBindingSource.EndEdit();
    //dbTableAdapter.Update( dbDataSet );

    if ( selectedCellRow > 0 )
    {
      DataRowView drv = ( DataRowView )dbDataSetBindingSource.Current;
      DataRow drToDelete = drv.Row;
      dbDataSet.MyTable.Rows.Remove( drToDelete );
    // This removed all remaining rows
    //  DDataTable.Rows.Remove( this.DDataTable.SelectedRows[ 0 ] );
    // This removed all remaining rows 
    //  dbDataSetBindingSource.RemoveCurrent();
    // This gave an error "Can't remove items not in the list?
    //  dbDataSetBindingSource.Remove( selectedRowStr );

      dbDataSetBindingSource.EndEdit();
      dTableAdapter.Update(dbDataSet);
    }
    else
      MessageBox.Show( "Error in delete row, bad index." );
  }
  catch (Exception ex)
  {
  //  CancelEventArgs myE = new CancelEventArgs();
  //  DDataTable_Validating( sender, myE );
    string myStr = "Error in deleting row\n" + ex.Message;
    MessageBox.Show( myStr, "User Delete a Row" );
  }
}

【问题讨论】:

    标签: c# sql datagridview


    【解决方案1】:

    您可以调用drToDelete.Delete(),然后调用dbDataSet.MyTable.AcceptChanges();更新数据集

    或者你可以直接打电话:

    dbDataSet.MyTable.Rows.RemoveAt(dbDataSetBindingSource.Position);
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢,drToDelete.Delete() 从数据库 (SQL) 中删除了单行,但在 DataDrigView 中删除了几行。
    • 更正:drToDelete.Delete 仅从 DataGridView 中删除数据,而不是 SQL Server。所以我在同一个地方。不能同时从 SQL 数据库和 DataGridView 中删除一行。
    猜你喜欢
    • 2020-10-30
    • 2010-09-15
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多