如果不在数据库中,则不希望在中继器中出现空白图像



数据库查询插入到中继器中。其中一个字段是图像。只有一些数据行有图像,所以如果它们有图像,它工作得很好,但是如果数据库中没有图像,它在应该有图像的地方显示一个空白点。如果数据库中没有图像,我希望它不会有空白图像渲染。我该怎么做呢?有些行有Image,有些没有。我想显示所有行,但是如果没有图像,我不希望出现空白图像

asp:Repeater id="cdcatalog" runat="server" onitemcreated="cdcatalog_ItemCreated" onitemcommand="cdcatalog_ItemCommand">
            <ItemTemplate>
  <    img src='<%# "/contents/thumbs/" + Eval("ThumbName")%>' width="375px"   height="200px"        
</ItemTemplate>
</asp:Repeater>
Page Load:
Dim cmd As New SqlCommand("SELECT * From Video", con)
        Dim ds = New DataSet()
        Dim da = New SqlDataAdapter(cmd)
        da.Fill(ds)
        cdcatalog.DataSource = ds
        cdcatalog.DataBind()

的想法是检查你从数据库得到什么之前,你把它放入中继器控制。如果image不存在,那么你可以添加一些默认的图片代替它,比如empty.png,它将是1px X 1px。

一个解决方案是更新获取数据的SQL查询,并使用ISNULL提供默认的空图像。

另一个解决方案是在ASP中这样做。. NET像这样(与rs显示的基本相同)

<asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <a href='<% #GetImageURL(Eval("ThumbName")) %>'></a>
        </ItemTemplate>
    </asp:Repeater>

然后在相同的web表单中创建protected GetImageURL,它执行所有的数学运算并显示一些默认图像(如果提供的不存在)

改变你的aspx图像标签从代码后调用函数,试试这个

 <img src='<%# "/contents/thumbs/" + Eval("ThumbName")%>' 
  width="375px"   height="200px" visible='<%# ShowImage(Eval("ThumbName"))%>'
后台代码

Protected Function ShowImage(name As Object) As [boolean]
If name IsNot Nothing Then
    Return name.ToString().Trim().Length > 0
End If
Return False
End Function

最新更新