首页 新闻 会员 周边 捐助

未将对象引用设置到对象的实例

0
[待解决问题]

我做了一个邮件收发系统,不是很成熟,邮件账户列表使用数据库的一张表绑定到datagridview控件,删除一行数据的操作,我是这样写的 :
     dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
     int strid = Convert.ToInt32(dataGridView1.CurrentRow.Cells["id"].Value.ToString());
       MessageDataContext mdc = new MessageDataContext();
            //linq to sql创建的实体类,调用存贮过程
                mdc.ddo_Delete(strid);
                mdc.SubmitChanges(); 
当删除最后一条数据时提示:
int strid = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString());这行代码未将对象引用设置到对象的实例

请大家看看是什么问题?

C#
guoyunshui的主页 guoyunshui | 菜鸟二级 | 园豆:204
提问于:2012-07-10 16:18
< >
分享
所有回答(4)
1

假如 dataGridView1.Rows.Remove(dataGridView1.CurrentRow); 执行成功,并且删除了最后一条数据,

那么此时 dataGridView1.Rows.Count 就等于 0 了,因此也就没有 CurrentRow了。

所以你应该调换这两句代码的位置,先 Convert,然后再 Remove.

Launcher | 园豆:45050 (高人七级) | 2012-07-10 16:33
0

可能是dataGridView1.CurrentRow.Cells为null或者dataGridView1.CurrentRow.Cells[0].Value为null

dudu | 园豆:30948 (高人七级) | 2012-07-10 16:34
0

这个错误已经很明白了对象为空。自己调试跟踪下就能找到错误了,貌似你的想法有点问题,解决方法正如1楼所说一样。删除之前先取出id,如果删除之后取出id其实是取出要删除的下一条id不知道你有没有发现?

童同 | 园豆:258 (菜鸟二级) | 2012-07-11 22:25
0

对于楼主的问题看是看不出来的,只能进行调试,

出现的错误是 未将对象引用设置到对象的实例,应该是在引用数据时出现的错误

楼主可以对数据进行一步一步调试输出,肯定会找到问题所在

我比较喜欢用

Response.Write();

Response.End();

祝楼主早日解决问题!

墨猦 | 园豆:668 (小虾三级) | 2012-07-12 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册