如果是空白,则跳过转发器控件中的项目

时间:2013-09-05 07:54:13

标签: asp.net vb.net repeater

我正在使用asp.net的转发器控件。它我使用两列查询和数据库表回复来填充数据。如果查询或回复列是空白,那么我不希望它重复与空行。那么我该如何检查它并跳过显示行。我的意思是,如果不存在回复,则查询将一起跳过两次回复。

以下是我的代码:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    <div style="margin-left: 40px">
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
        <HeaderTemplate>
<table style=" border:1px solid #df5015; width:500px" cellpadding="0">
<tr style="background-color:#df5015; color:White">
<td colspan="2">
<b>Chat</b> 
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>

<tr style="background-color:#EBEFF0">
<td>
<table style="background-color:#EBEFF0;border-top:1px dotted #df5015; width:500px" >
<tr>
<td>
Query:

<asp:Label ID="lblSubject" runat="server" Text='<%#Eval("Query") %>' Font-Bold="true"/>

</td>
</tr> 
</table> 
</td> 
</tr>
<tr>
<td>

Reply
<asp:Label ID="lblComment" runat="server" Text='<%#Eval("Reply") %>'/>
</td>
</tr>
<tr>
<td>

</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
        </asp:Repeater>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:Service_WinmanConnectionString %>" 
            SelectCommand="SELECT [Query], [Reply] FROM [WebCalls]"></asp:SqlDataSource>

    </div>
    </form>
</body>
</html>

我的意思是表格的行如下图所示

enter image description here

然后我编写的代码将提供如下所示的输出

enter image description here

此处第三行不包含回复列的值。所以在设计输出中回复:为空(见图片)。但我希望那个标签“回复:”不要来。所以输出就像 在Query:c之后,它会显示Query:d而不是打印Reply:(这是空白的)。所以我想要回复:标签在这种情况下不显示。 就像聊天一样,如果一起回复两次,它将显示两次。 那怎么可以实现呢?

1 个答案:

答案 0 :(得分:0)

两个明显的解决方案......

一种方法是使用对查询的过滤来限制从数据库返回的数据量。

另一种是使用转发器的ItemDataBound ......

Protected Sub Repeater1_onItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
  If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
    If e.Item.DataItem("Query") Is DBNull.Value OrElse e.Item.DataItem("Reply") Is DBNull.Value Then
      e.Item.Visible = False
    End
  End If
End Sub