在DataGridView里绑定dataset数据,通过DataGridView.SelectedRows[0].Index获得选中行的行号删除行,但是在DataGridView里删除行后,在更新数据库前,dataset里的行没有删除,因此行号与DataGridView的不一样,这个时候再次删除行就会删错,这个该怎么办

解决方案 »

  1.   

    你怎么删?不会是删dataset里面的吧?获取ID后,则行数据库语句,然后再绑定一下就行了
      

  2.   

    直接删除dataset 里面的就行了。
      

  3.   

    DataRowView drv = dataGridView1.Rows[e.RowIndex].DataBoundItem as DataRowView;
    drv.Delete();使用DataBoundItem 获得datagridview在dataset中的实际行,直接删除
      

  4.   

    我没有绑定数据才这样的,还有就是执行
    DataGridView.DataSource = DataSet.Tables["BookInformation"]; 
    DataRowView drv = DataGridView.SelectedRows[0].DataBoundItem as DataRowView;
    drv.Delete(); 
    后,删除了所有的数据是为什么啊
      

  5.   

    if(DialogResult.Yes ==MessageBox.Show("确定删除?","提问",MessageBoxButtons.YesNo,MessageBoxIcon.Question ,MessageBoxDefaultButton.Button1 ))
    {
    dsCourse.Tables ["student"].Rows [this.BindingContext [stu_num,"student"].Position ].Delete ();
    sqlDataAdapter.Update(stu_num,"student");
    SetState(true);
    MessageBox.Show("删除数据成功!");
    }
      

  6.   


     int rowindex = this.dataGridViewitem.CurrentRow.Index;   //第一步要获取选中的行            itemmodel.Code = int.Parse(this.dataGridViewitem[1, rowindex].Value.ToString());                              //获取选中行的第一个单元格值作为你删除语句的where条件            DialogResult dr = MessageBox.Show("你确定要删除知识点编号为" + itemmodel.Code + "的信息吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (dr == DialogResult.Yes)
                {
                    if (itembll.DeleteItemcode(itemmodel))  //删除成功
                    {
                        //刷新datagridview
                        ItemdataGridView();
                    }
                    else
                    { 
                        MessageBox.Show("删除失败!"); 
                    }
                }
      

  7.   

    你删除的是DATASET里面的,只是把结果集中给删除了。得重新邦定啊!这样重新指向一下啦!
      

  8.   

    解决了,DataGridView绑定dataset后
    (DataGridView.SelectedRows[0].DataBoundItem as DataRowView).Row.Delete();
    就可以了