在datagrid中删除选中行是出现异常。

zyt8777 2005-05-26 04:39:20
private void delete_Click(object sender, System.EventArgs e)
{
//
int num=ds.Tables["个人其他信息"].Rows.Count-1;
if(num>-1)
{
ArrayList ar=new ArrayList();
for(int i=num;i>=0;i--)
{
if(this.dataGrid1.IsSelected(i))
{
ar.Add(i);
}
}
if(ar.Count>0)
{
if(MessageBox.Show("确实要删除选中的"+ar.Count.ToString()+
"行吗? 注意:删除后就无法恢复了!","警告",
MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
foreach(int i in ar)
{
ds.Tables["个人基本信息"].Rows[i].Delete();
}
da.Update(ds,"个人其他信息");
}
}
else
{
MessageBox.Show("请先用鼠标点击左边灰色部分选择要删除的"+
"行(可以按住Ctrl键或者Shift键同时用鼠标选中多行),然后再删除。","提示");
}
}
this.DataGirdDataBind();
}

在执行到 ds.Tables["个人基本信息"].Rows[i].Delete();时,出现 未处理的“System.NullReferenceException”类型的异常出现在糖尿病系统.exe中
其他信息:未将对象引用设置到对象的实例 这个异常
由于这个系统马上就要交了,小弟在次求各位老大帮忙!

在线~~~~~~~等~~~~~~~!!!
...全文
216 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyt8777 2005-05-30
  • 打赏
  • 举报
回复
那最后绑定数据源怎么写呢?
zyt8777 2005-05-27
  • 打赏
  • 举报
回复
没用的。

还是不能更新。
cih006 2005-05-27
  • 打赏
  • 举报
回复
哈哈,一看就是在C#网络编程及应用抄的代码
willytiger 2005-05-27
  • 打赏
  • 举报
回复
删除后,重新绑定。就可以更新了。
cih006 2005-05-27
  • 打赏
  • 举报
回复
最后一行:

this.DataGirdDataBind();



重新帮定数据源不是这样写的
xjaifly 2005-05-27
  • 打赏
  • 举报
回复
jrh9981(小偷) 方法很好通过绑定来对数据操作最好!
zyt8777 2005-05-27
  • 打赏
  • 举报
回复
还是和前面一样,能在窗体中删掉,可是数据库的更新有问题。

真的想不出该怎么改这个问题了。

跪求好心人帮助。
zyt8777 2005-05-27
  • 打赏
  • 举报
回复
dg什么东西呀?

还有就是我感觉我是删了数据库更新的问题。

能帮我解决这个吗?

谢谢啦各位大侠!
jrh9981 2005-05-27
  • 打赏
  • 举报
回复
BindingManagerBase bm = this.dg.BindingContext[this.dg.DataSource, this.dg.DataMember];
DataRow dr=((DataRowView)bm.Current).Row;
((DataTable)(this.dg.DataSource)).Rows.Remove(dr);
删除用这个方法就可以了
zyt8777 2005-05-27
  • 打赏
  • 举报
回复
思路有问题?

什么问题?我觉得这样可以的呀。
zyt8777 2005-05-27
  • 打赏
  • 举报
回复
在删除的时候是没问题了,可是好象数据库没有更新,刚才删掉的记录还在的。

有的更新的语句还应该怎么修改呢?
zr1982930 2005-05-27
  • 打赏
  • 举报
回复
思路有很大问题!
zyt8777 2005-05-27
  • 打赏
  • 举报
回复
那句删除的语句用这句代替吗?
winsex 2005-05-27
  • 打赏
  • 举报
回复
ds1.Tables["t1"].Rows.Remove(ds1.Tables["t1"].Rows[this.DGrid1.CurrentRowIndex]);
zyt8777 2005-05-27
  • 打赏
  • 举报
回复
private void delete_Click(object sender, System.EventArgs e)
{
//DataSet ds = new DataSet();
int num=ds.Tables["个人其他信息"].Rows.Count-1;
if(num>-1)
{
ArrayList ar=new ArrayList();
for(int i=num;i>=0;i--)
{
if(this.dataGrid1.IsSelected(i))
{
ar.Add(i);
}
}
if(ar.Count>0)
{
if(MessageBox.Show("确实要删除选中的"+ar.Count.ToString()+
"行吗? 注意:删除后就无法恢复了!","警告",
MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
foreach(int i in ar)
{
ds.Tables["个人其他信息"].Rows[i].Delete();//没有实例化,怎么实例化?

}
//da.DeleteCommand =
da.Update(ds.Tables["个人其他信息"]);

ds.Tables["个人其他信息"].AcceptChanges();

this.DataGirdDataBind();
}
}
else
{
MessageBox.Show("请先用鼠标点击左边灰色部分选择要删除的"+
"行(可以按住Ctrl键或者Shift键同时用鼠标选中多行),然后再删除。","提示");
}
}
//当执行da.Update(ds.Tables["个人其他信息"]); 时 出现
// 未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中
//
// 其他信息:当传递具有已删除行的 DataRow 集合时,更新要求有效的 DeleteCommand。

各位老大,求你们帮忙了,在线等!

谢谢啦!
zyt8777 2005-05-26
  • 打赏
  • 举报
回复
刚才上面的异常解决了。可是又出了新的问题。

dataset不能更新数据库。

如果我现在删除了一条数据的话,由于数据库不会更新,再次打开的时候那条数据依然还在的。

该怎么解决,我已经添加了那条更新dataset的语句了,没用的。
zyt8777 2005-05-26
  • 打赏
  • 举报
回复
我刚刚才开始学的,有些还不知道怎么回事。

可是我没有用到DataTable呀。

怎么设置呢?
yistudio 2005-05-26
  • 打赏
  • 举报
回复
设置DataTable的主键试一试
zyt8777 2005-05-26
  • 打赏
  • 举报
回复
糊涂了。

那怎么给它实例化呢?
ekin7913046 2005-05-26
  • 打赏
  • 举报
回复
你的对象没有实例化啊!!
加载更多回复(1)

111,120

社区成员

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

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

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