C# DataGridView删除行问题

Comforter 2009-12-03 06:42:27
在DataGridView里绑定dataset数据,通过DataGridView.SelectedRows[0].Index获得选中行的行号删除行,但是在DataGridView里删除行后,在更新数据库前,dataset里的行没有删除,因此行号与DataGridView的不一样,这个时候再次删除行就会删错,这个该怎么办
...全文
752 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunhuiyuncheng 2009-12-04
  • 打赏
  • 举报
回复
你删除的是DATASET里面的,只是把结果集中给删除了。得重新邦定啊!这样重新指向一下啦!
孤芳-自赏 2009-12-04
  • 打赏
  • 举报
回复

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("删除失败!");
}
}
seberila 2009-12-04
  • 打赏
  • 举报
回复
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("删除数据成功!");
}
Comforter 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 comforter 的回复:]
引用 8 楼 n73sn73s 的回复:
DataRowView drv = dataGridView1.Rows[e.RowIndex].DataBoundItem as DataRowView;
drv.Delete();

使用DataBoundItem 获得datagridview在dataset中的实际行,直接删除

为什么显示 未将对象引用设置到对象的实例

[/Quote]
我没有绑定数据才这样的,还有就是执行
DataGridView.DataSource = DataSet.Tables["BookInformation"];
DataRowView drv = DataGridView.SelectedRows[0].DataBoundItem as DataRowView;
drv.Delete();
后,删除了所有的数据是为什么啊
若叶轻飘 2009-12-04
  • 打赏
  • 举报
回复
删除行以后调用绑定方法
Comforter 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 n73sn73s 的回复:]
DataRowView drv = dataGridView1.Rows[e.RowIndex].DataBoundItem as DataRowView;
drv.Delete();

使用DataBoundItem 获得datagridview在dataset中的实际行,直接删除
[/Quote]
为什么显示 未将对象引用设置到对象的实例
Comforter 2009-12-04
  • 打赏
  • 举报
回复
解决了,DataGridView绑定dataset后
(DataGridView.SelectedRows[0].DataBoundItem as DataRowView).Row.Delete();
就可以了
kinglshadow 2009-12-03
  • 打赏
  • 举报
回复
UP
n73sn73s 2009-12-03
  • 打赏
  • 举报
回复
DataRowView drv = dataGridView1.Rows[e.RowIndex].DataBoundItem as DataRowView;
drv.Delete();

使用DataBoundItem 获得datagridview在dataset中的实际行,直接删除
Comforter 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiangbin286 的回复:]
直接删除dataset 里面的就行了。
[/Quote]
这样就没法更新到数据库里了
林三一 2009-12-03
  • 打赏
  • 举报
回复
直接删除dataset 里面的就行了。
Comforter 2009-12-03
  • 打赏
  • 举报
回复
不想立即绑定,而且获得主键的话,要对数据进行搜索,会降低效率,还有其它方法么
jok127 2009-12-03
  • 打赏
  • 举报
回复
你怎么删?不会是删dataset里面的吧?获取ID后,则行数据库语句,然后再绑定一下就行了。。。
hhc123 2009-12-03
  • 打赏
  • 举报
回复
DataSet用不好,你就用DataTable
PandaIT 2009-12-03
  • 打赏
  • 举报
回复
获取当前行的主键再执行删除方法!!

你那个是获取选中行的索引!!
hhc123 2009-12-03
  • 打赏
  • 举报
回复
删除后重新绑定下数据嘛

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧