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