private void btn_Del_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确认要删除吗?", "删除后不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                Current = dataGridView1.CurrentCell.RowIndex; //当前选中行   
                string strID = dataGridView1.Rows[Current].Cells[12].Value.ToString().Trim();
                string strSql = "delete from gps where cstr(编号)=" + strID ;
                OleDbConnection conn = GetConnection();
                try
                {
                    conn.Open();
                    OleDbCommand cmd = new OleDbCommand(strSql, conn);
                    int a = cmd.ExecuteNonQuery();
                    conn.Close();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                
            }
            Admin_Activated(null, null);
        }

解决方案 »

  1.   

    设断点,查看Current是否获取到你要删除的行的编号;还有如果数据库中不是数字要加单引号
      

  2.   

    找到问题了,是因为我用了一个private void Admin_Activated(object sender, EventArgs e)
            {
                Admin_Load(null,null);
                dataGridView1.Refresh();
            } 
      

  3.   

    Current = dataGridView1.SelectedCells[0].OwningRow.Index; //当前选中行   
      

  4.   

    Current = dataGridView1.CurrentRow.Index;    //当前选中的行
      

  5.   

    sql语句都是错的,不知道你怎么能运行的
    string strSql = "delete from gps where cstr(编号)='"+strID+"'";
      

  6.   

    我想让子窗体调用一下父窗体的form_load就可以了
    如何写呢?
      

  7.   

    Activated是做什么的?只要窗体有活动就会执行它
      

  8.   

    如果是删除后想在dataGridView1中剔除那一行,在执行完删除语句后不需要重新加载,只需要在原有的基础上移除就可以了。  例:dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);      //剔除已删除的项(注:不需重新加载,提高效率) ,可以提高效率