gpt4 book ai didi

asp.net - 如果中继器控件中的项目为空,则跳过该项目

转载 作者:行者123 更新时间:2023-12-02 15:30:35 25 4
gpt4 key购买 nike

我正在使用 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:(这是空白的)。所以我希望reply:标签不在这种情况下显示。就像聊天一样,如果一个人同时回复两次,就会显示两次。那么如何实现呢?

最佳答案

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

其中之一是使用查询过滤来限制从数据库返回的数据量。

另一种是使用转发器的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

关于asp.net - 如果中继器控件中的项目为空,则跳过该项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18630713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com