当我尝试检查该行中是否有针对该特定图像的图像时,如果我设置了值== null,则显示错误,当找到图像时代码工作正常,但是当有图像时我不打印任何屏幕截图没有图像。所有这些都是在gridview中完成的
受保护的void gvupdationsummary_RowDataBound(对象发送者,GridViewRowEventArgs e) {
DataRowView dr = (DataRowView)e.Row.DataItem;
if(dr!=null)
{
//string src = Convert.DBNull(imageUrl);
string imageUrl="";
if (imageUrl!=null)
{
Convert.IsDBNull(imageUrl);
imageUrl = "data:image/jpg;base64," + Convert.ToBase64String((byte[])dr["imgdata"]);
(e.Row.FindControl("image1") as Image).ImageUrl = imageUrl;
}
else
{
Convert.IsDBNull(imageUrl);
imageUrl = null;
(e.Row.FindControl("image1") as Image).ImageUrl = imageUrl;
}
}
答案 0 :(得分:0)
发生异常是因为dr["imgdata"]
包含DBNull.Value
,它不能直接转换为字节数组。使用强制转换之前,应先对DBNull.Value
进行检查。
请注意,Convert.IsDbNull()
返回bool
的值,用它来检查if
的内部条件,如下例所示:
if (!Convert.IsDbNull(dr["imgdata"]))
{
imageUrl = "data:image/jpg;base64," + Convert.ToBase64String((byte[])dr["imgdata"]);
// do other things
}
else
{
// do something else
}
注意:
Convert.IsDBNull(imageUrl)
是不必要的,因为应该使用string.IsNullOrEmpty()
而不是Convert.IsDbNull()
检查空字符串。