删除DataGridView行我用的是这个方法:this.dataGridView1.Rows.RemoveAt(e.rowIndex),可以正常删除,没有任何问题,当是我想在用户删除前给用户个提示,就加了一个提示窗口,MessgeBox.Show("……")提示框,当点击提示框中的确定按钮后发现删除行的第一个单元格的值又恢复到之前的值,并且覆盖下一行之前第一个单元格的值(其他单元格是正常删除的),这是怎么回事呢

解决方案 »

  1.   

    dataGridView1.Rows.Remove(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex])
    估计是没更新
      

  2.   

    在删除之后用了这个方法还是不行,和之前的情况一样,和MessgeBox.Show()这个方法是不是有什么关系呢,如果我不加这个方法就可以正常删除,加了这个也可以删除,但是就是在点确定之后删除行的第一个单元格值会覆盖移上来那一行第一个单元格的值
      

  3.   

    将你的数据重新在gridview上绑定一遍
      

  4.   

    数据中DataGridView控件上,还没有存到数据库,所以没法从数据库取数据源,目前的问题是禁止用户向DataGridView第一个单元格输入重复的值,如果他输入重复的就把当前重复的这一行删除,下一行自动上移,同时给出一个提示框(messagebox.show())
      

  5.   

    你是怎么绑定数据到DataGridView的?我试过了,不会有这样的问题呀。
      

  6.   

       base ID-number Delete 
      HiddentField myid=(HiddentField)GridView1.Rows[e.RowIndex].FindControls("HiddentField1")
       helper.exec("delete from Tablename where IDnumber="+myid.value)  
    GridView1.DataSouce=helper.search("select * from Tablename")
     GridView1.DataBind();
    end
      

  7.   

    可能是你直接删除数据集中的并没有删除数据库中数据,然后重新加载窗体时有重新加载没有更改源数据库
    删除后还得用SqlDataAdapter.Update同步到数据库
      

  8.   

    看下是不是又重新加载了一次,不是在首次加载时的。if(!ispostback)
      

  9.   

     这个问题我也遇到过,你是用数据源绑定的还是用ADO.net绑定的,如果是后者建议吧绑定的DataSet或DataTable设为静态的试试看,然后再看看加载时的回床问题,应该就是这个问题的。
      

  10.   

     private void btnDelete_Click(object sender, EventArgs e)
          {
             if(MessageBox.show("你确认删除吗?","提 示",MessageBoxButtons.YesNo,MessageBoxIcon.Information)==Dia)
             {
              int Rowid = this.DataGridView.CurrentCell.RowIndex;           //根据Rowid找到主键在数据库进行删除
             }
    DataGridViewDataBind();
          }
      

  11.   

    如果有绑定数据源的DataGridView,那么在winform上原则上你最好是对数据源进行操作。
      

  12.   

    可以直接用SQL语句 删除选择的行
      自己写个方法用来调用数据库里面的数据
      删除行后,在调用刷新数据的方法 就可以了!
      如果要弹出一个提示的话,也是同样的做法
      

  13.   

    我不用这个控件,我都用第三方控件,infragistic 的ultragrid 
      

  14.   

    我把那个问题再重新描述一下:
    我是winform写的,当用户中DataGridView第一个单元格输入与其他行第一个单元格值相同的时候就会把整行删除,下面的行上移,所以输入的数据要首先和界面中DataGridView的每一行进行比较,用不到数据库里取数据。
    另外我一直怀疑是不是我把这个删除方法的位置写错了,我把this.dataGridView1.Rows.RemoveAt(e.RowIndex)这个方法写在 private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e){}里面的,就是说当用户退出该单元格编辑时发生,如果不是在这个时间里写,那又在哪里写呢?
      

  15.   

    现在的问题是在private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e){}事件里删除dataGridView行是正确的,但是一旦退出这个方法时删除行的第一个单元格的值就会恢复把下面的那行第一个单元格值覆盖