datagridview传值出现“未将对象引用设置到对象的实例。”问题

nextdoor2 2012-01-07 01:33:46
运行以下代码段总是出现上述问题,请问原因及修改方式

#region 保存dgv中被选中的某一行的所有图书信息

string updateclikedbook_booknum = null;
string updateclikedbook_bookname = null;
string updateclikedbook_booktypename = null;
string updateclikedbook_bookauthor = null;
string updateclikedbook_bookpress = null;
string updateclikedbook_bookpressdate = null;
string updateclikedbook_bookprice = null;
string updateclikedbook_bookplace = null;
string updateclikedbook_bookborrowflag = null;
string updateclikedbook_bookintrodution = null;
string updateclikedbook_booktext = null;
Byte[] imagebytes = null; // 保存图书图片的地址

#endregion

private void dgv_Book_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0) // 是第一列(选择列)的话,则进行下一步操作
{

updateclikedbook_booknum = this.dgv_Book.Rows[e.RowIndex].Cells[2].Value.ToString();
updateclikedbook_bookname = this.dgv_Book.Rows[e.RowIndex].Cells[3].Value.ToString();
updateclikedbook_booktypename = this.dgv_Book.Rows[e.RowIndex].Cells[4].Value.ToString();
updateclikedbook_bookauthor = this.dgv_Book.Rows[e.RowIndex].Cells[5].Value.ToString();
updateclikedbook_bookpress = this.dgv_Book.Rows[e.RowIndex].Cells[6].Value.ToString();
updateclikedbook_bookpressdate = this.dgv_Book.Rows[e.RowIndex].Cells[7].Value.ToString();
updateclikedbook_bookprice = this.dgv_Book.Rows[e.RowIndex].Cells[8].Value.ToString();
updateclikedbook_bookplace = this.dgv_Book.Rows[e.RowIndex].Cells[9].Value.ToString();
updateclikedbook_bookborrowflag = this.dgv_Book.Rows[e.RowIndex].Cells[10].Value.ToString();
updateclikedbook_bookintrodution = this.dgv_Book.Rows[e.RowIndex].Cells[11].Value.ToString();
updateclikedbook_booktext = this.dgv_Book.Rows[e.RowIndex].Cells[12].Value.ToString();
//Byte[] imagebytes = Convert.ToByte[](this.dgv_Book.Rows[e.RowIndex].Cells[13].Value.ToString());
}
}
...全文
271 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
余山水 2012-01-07
  • 打赏
  • 举报
回复
this.dgv_Book.Rows[e.RowIndex].Cells[i].Value的值是null了.你跟踪调试一下
苦苦的潜行者 2012-01-07
  • 打赏
  • 举报
回复
取得时候用 if (this.dgv_Book.Rows[e.RowIndex].Cells[2].FormattedValue.ToString().trim()!="")
这样就可以过滤掉null和空格.
EnForGrass 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nextdoor2 的回复:]

BOOK_IMAGE是DatagridView中的名称没错,错误提示是出在“Byte[] imagebytes = Convert.ToByte[]”这一部分。
[/Quote]

图片格式转换成二进制,网上多的代码
nextdoor2 2012-01-07
  • 打赏
  • 举报
回复
BOOK_IMAGE是DatagridView中的名称没错,错误提示是出在“Byte[] imagebytes = Convert.ToByte[]”这一部分。
EnForGrass 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 nextdoor2 的回复:]

还有也出现错误:
this.dgv_Book.Rows[e.RowIndex].Cells["BOOK_IMAGE"]中Cells[]里是DatagridView的名称哦,不是你数据库里的字段名
[/Quote]
nextdoor2 2012-01-07
  • 打赏
  • 举报
回复
还有也出现错误:
Byte[] imagebytes = Convert.ToByte[](this.dgv_Book.Rows[e.RowIndex].Cells["BOOK_IMAGE"].Value.ToString());
提示:无法进行转换
nextdoor2 2012-01-07
  • 打赏
  • 举报
回复
都没有作用,问题仍然存在。
EnForGrass 2012-01-07
  • 打赏
  • 举报
回复
其他先注释啥。先看一个

updateclikedbook_bookintrodution = this.dgv_Book.Rows[e.RowIndex].Cells["BOOK_INTRODUTION"].Value.ToString()

是否有值??
nextdoor2 2012-01-07
  • 打赏
  • 举报
回复
改了,但为什么那个:
updateclikedbook_bookintrodution = this.dgv_Book.Rows[e.RowIndex].Cells["BOOK_INTRODUTION"].Value.ToString();
还是会出现那个问题。
熙风 2012-01-07
  • 打赏
  • 举报
回复
出现空值了。
updateclikedbook_booknum = this.dgv_Book.Rows[e.RowIndex].Cells[2].Value.ToString();

cells["name"]用列名吧。。。

111,125

社区成员

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

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

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