想从数据表中读取图片的地址,如果表中某条图片地址记录为空,则不在网页上显示未找到图片的差号 "X".
以下代码运行结果正常Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
        Dim row As System.Data.DataRowView
        Dim img As Image
        row = DirectCast(e.Item.DataItem, System.Data.DataRowView)
        If row("PictureURL").ToString().Trim() = "" Then
            img = DirectCast(e.Item.FindControl("Image1"), Image)
            img.Visible = False
        End If
    End Sub网页文件为<asp:datalist id=...>
<itemtemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("PictureURL") %>' />
</itemtemplate>
</asp:datalist>
为什么img是另外定义的变量,却可以控制Datalist中的Image控件的是否显示?

解决方案 »

  1.   

    Datalist中的Image控件
    生成的html 标记就是<img ..>
                img = DirectCast(e.Item.FindControl("Image1"), Image) 
    将datalist里的Image控件转化为Image
      

  2.   

    无非是在每次绑定行时根据img的url是否为空来判断它是否显示而已.VB的代码看起来不爽.
      

  3.   

    这个就是用来存放找到的Image控件。
      

  4.   

    还是不懂啊。
    不定义img的话,直接
    If row("PictureURL").ToString().Trim() = "" Then 
                e.Item.FindControl("Image1").Visible=False
    End If 
    可以理解。
    但是为什么定义的img只是个变量。却可以控制到Datalist里面的控件呢?
      

  5.   

    img被定义为Image类型。
    img.Visible为什么决定了Datalist控件里的Image1控件的Visible属性?
    img.Visible=false与
    e.Item.FindControl("Image1").Visible=False的效果居然是相同的。我不明白是这个。
      

  6.   

    你还是弄清楚引用类型和值类型的区别再说吧.引用类型赋值传递的是对象的引用,两个引用类型指向同一个对象.img = DirectCast(e.Item.FindControl("Image1"), Image) img和e.Item.FindControl("Image1")指向的对象是相同的.