3

我正在使用 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>

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

在此处输入图像描述

然后对于我编写的代码将给出如下所示的输出

在此处输入图像描述

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

4

1 回答 1

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
于 2013-09-05T07:59:57.400 回答