Hide image control if no imageurl is returned from DB

Hello, I have used the following code in the past to hide an image control if the ImageURL is null but for some reason it is not working in this situation. Why can't this work?

I'm getting the following error on this line:
   If CType(Picture, String) Is DBNull.Value Then

Conversion from type 'DBNull' to type 'String' is not valid.


Markup:
<asp:Image ID="image" runat="server" ImageUrl= '<%# "~/EventGraphics/" & Eval("ImageURL") %>'
                    Visible='<%# CheckImage(Container.DataItem("ImageURL")) %>'/>


Function:

 Public Function CheckImage(ByVal Picture As Object) As Boolean

        If CType(Picture, String) Is DBNull.Value Then
            Return False
        Else
            Return True
        End If
    End Function
gogetsomeAsked:
Who is Participating?
 
steveberzinsConnect With a Mentor Commented:
I think you want to use this:

 If Picture = DBNull.Value Then
        Return False
        Else
            Return True
        End If

not 100% sure, but think the problem is CType is going to make a string, and the compiler knows that there is not a string equivalent of DBNull.Value, so this will never be true. I've not done a lot of vb.net, but usually the Is keyword used for comparing types, not values, and usually used to do something like if x Is Nothing, or if x is String, not if x is String.Empty. maybe someone can explain this better, but I don't think 'Is' is ever really appropriate for value comparisons. (unless you happen to be a popular past president, then is has a whole different meaning :)
0
 
Pratima PharandeCommented:
<asp:Image ID="image" runat="server" ImageUrl= '<%# "~/EventGraphics/" & Eval("ImageURL") %>'
                    Visible='<%# CheckImage(Eval("ImageURL")) %>'/>



Public Function CheckImage(ByVal Picture As String) As String

        If  Picture <> "" Then
               
            Return  "True"
else
 Return  "False"

                   
        End If
    End Function
0
 
gogetsomeAuthor Commented:
LOL, I must be a past president..

This did not work:
 If Picture = DBNull.Value Then
        Return False
        Else
            Return True
        End If

But this did:
 If Picture Is DBNull.Value Then
            Return False
        Else
            Return True
        End If

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.