日期:2014-05-18  浏览次数:20650 次

单击鼠标选中数据
我想删除GridView中单击选中的行,下面的代码对吗?为什么每次删除的都不是选中的行?
 private static int rowIndex = 1;
  private void Data_GridView_CellEnter(object sender, DataGridViewCellEventArgs e)
  {
   
  rowIndex = e.RowIndex;
  //Data_GridView.
  }

  int i = rowIndex;

  private void btn_dele_Click(object sender, EventArgs e)
  {
  try
  {
  SqlDataAdapter myDataAdapter = new SqlDataAdapter(sql, conn);
  SqlCommandBuilder myBuillder = new SqlCommandBuilder(myDataAdapter);
  DataRow drow = myDataSet.Tables["Mark"].Rows[i];
  drow.Delete();
  myDataAdapter.Update(myDataSet, "Mark");
  conn.Close();
  Console.ReadLine();
   
  }
  catch
  { 
   
  }
  }

------解决方案--------------------
DataGridView和DataTable的记录顺序有可能不一致。
这也和你绑定的方式有关。

不用直接删记录,你可以设断点观察一下:
Data_GridView.Rows[i]和myDataSet.Tables["Mark"].Rows[i]应该是不一样的。

既然你的行序号是由DataGridView获取的,
试试将
C# code
DataRow drow = myDataSet.Tables["Mark"].Rows[i];
drow.Delete();