我的代码是这样的                        //这段代码有问题
                        string str = this.dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value.ToString();
                        string delete = "delete from jbxx where gh='"+str+"'";
                        data(delete);理论上应该这样没错啊,如果我有三行数据的话,我选中第二行数据,然后点删除,结果删除的是第三行的,不明白问题出在哪里

解决方案 »

  1.   

    string delete = "delete from jbxx where gh='"+str+"'";
    在这里下断点,观察dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value是什么。
      

  2.   

    我调试了,dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value是选中行的下一行的值,dataGridView1.CurrentRow.Index却是没有错的
      

  3.   

    我刚才看了一下
    string str1 = this.dataGridView1.Rows[0].Cells[1].Value.ToString();
    我的理解应该第1行,第2列的值啊,但是为什么是第2行,第2列的值
      

  4.   

    整段代码如下                    for (int i = dataGridView1.SelectedRows.Count; i <= dataGridView1.SelectedRows.Count; i--)
                        {
                            DataRowView m = dataGridView1.SelectedRows[i-1].DataBoundItem as DataRowView;
                            m.Delete();
                            //这段代码有问题
                            string str = this.dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value.ToString();
                            string str1 = this.dataGridView1.SelectedRows[i].Cells[1].Value.ToString();
                            string delete = "delete from jbxx where gh='"+str+"'";
                            data(delete);
                            
                        }
      

  5.   

    >>如何删除一个dataGridView选中的行取得当前行中的ID所在列的值,到数据库根据条件删不就得了
      

  6.   

    一般用遍历选中行,然后取出KEY删除KEY条,关注ing
      

  7.   

      for (int i = dataGridView1.SelectedRows.Count; i <= dataGridView1.SelectedRows.Count; i--)
                        {
     string str = this.dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value.ToString();
                            string str1 = this.dataGridView1.SelectedRows[i].Cells[1].Value.ToString();
                            string delete = "delete from jbxx where gh='"+str+"'";
                            data(delete);
    //代码的先后顺序换一下                        DataRowView m = dataGridView1.SelectedRows[i-1].DataBoundItem as DataRowView;
                            m.Delete();
                                                                           
                        }
      

  8.   


    思路:你之前绑定DataGridView时,也把数据表中ID这列的值绑定上去,显示的时候可以将其隐藏。在你需要删除的时候,直接取出ID这列的值,然后删除,最后再重新绑定,就OK了。参考代码:
               int id = int.prase(this.datagridview.Row[""].Cells[""].value.ToString());
              .....
              删除数据
               .......
              重新绑定
      

  9.   

    int selectrow = DataGridView1.SelectedCells[0].RowIndex;
    DataGridView1.Rows.RemoveAt(selectrow);
      

  10.   

    string str = this.dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value.ToString(); 问题出在这一句上面, 16楼的办法不错哦! 可以采取