日期:2014-05-18  浏览次数:20547 次

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

感谢分50分。


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

------解决方案--------------------
C# code

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;
                }
            }
        }

------解决方案--------------------
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","默认图片路径");
}
}
这样你只要有一张默认图片就可以,不需要上传的
------解决方案--------------------
<asp:Image onerror="this.style.visibility='hidden';"/>