各位大侠:
    小弟所做工作如下:数据库中有一个表TEST,表中字段分别为ID和IMAGE1和IMAGE2,字段类型分别为int ,vchar和vchar。使用时管理员从后台提交图片到upload文件夹中,同时将图片名称存放到IMAGE1和IMAGE2字段中。前台通过datalist控件绑定image控件显示图片供用户浏览。
    现在遇到的问题如下:小弟一条记录有时会同时上传2个图片,有时只上传1个图片。2个图片时前台显示的时候是没有问题的,但是只上传一张图片时就会遇到如下问题,也就是一张图片显示,但是另外一个图片控件由于无图片显示就会显示一个红色的叉号,十分刺目。
    我知道用户可以上传一张默认图片代替,但由于一定原因,领导不允许这样,因为以后还可能会有同时上传数十张图片的情况,再全部上传默认图片就不合适。
    因此想请教各位大侠,不知哪位能够根据图片框中是否含有图片来动态控制Image控件的可见性。感谢分50分。

解决方案 »

  1.   

    <asp:image runat="server" ImageUrl='<%#Eval("imageUrl")' Visible='<%#Eval("imageUrl")==DbNull.Value?true:false%>'
    智能判断,如果改图片字段路径为空,则控件的visible属性为true(即不显示),否则就显示。
      

  2.   

    <asp:image id="image1" runat="server" ImageUrl=' <%# Eval("imageUrl")%>' Visible=' <%# Eval("imageUrl")!=System.DBNull.Value %>' /> 
      

  3.   


    private void DataList1_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item ||  e.Item.ItemType==ListItemType.AlternatingItem)
    {
    System.Web.UI.WebControls.Image img1=e.Item.FindControl("Image1");
    if(img1.ImageUrl.Equals(""))
    {
    img1.Visible=false;
    }
    }
    }
    上面对应的是vs 2003里面的写法,05稍微改一下就可以啦
      

  4.   

    private void DataList1_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
            {
                if(e.Item.ItemType==ListItemType.Item ||  e.Item.ItemType==ListItemType.AlternatingItem)
                {
                    System.Web.UI.WebControls.Image img1=e.Item.FindControl("Image1");
                    img1.Attributes.Add("onerror","默认图片路径");
                }
            }
    这样你只要有一张默认图片就可以,不需要上传的
      

  5.   

    DbNul是个什么东西?不懂。为何编译报错说:CS0103: 当前上下文中不存在名称“DbNull”。需要如何解决?多谢
      

  6.   

        把DbNull改成DBNull错误就没了。按照“周公”的方法做了一下,但效果没有达到,这样发现不管imageurl中绑定的字段是否为空,image控件的visible属性都为false。也就是image控件不见了。为何?
        popule兄的if(img1.ImageUrl.Equals(""))好像也无法控制image控件的可见性。
    aman兄的也是如此,还请各位大侠不吝赐教。
      

  7.   

    <asp:Image onerror="this.style.visibility='hidden';"/>
      

  8.   

    虽然没能用大家的方法解决问题,但同样对大家的热情帮助给予感谢。
    最终赠分如下:
       周公 10分;
       高歌10 分;
       popule 10分;
       逍遥客 10分;
       青山 10分。    多谢大家。