【问题标题】:How can I display "No Records found" in datalist?如何在数据列表中显示“未找到记录”?
【发布时间】:2013-10-09 20:52:44
【问题描述】:

这段代码表面上看起来很简单,但我试图在 datalist 中没有记录时显示一条消息。

我在标记上有这个:

<asp:DataList ID="DataList1" runat="server" CellPadding="4"
   DataSourceID="SqlDataSource1"
   Font-Bold="False" OnSelected="SqlDataSource1_Selected" Font-Names="Verdana"
   Font-Size="Small" RepeatColumns="2"
   RepeatDirection="Horizontal" Width="100%" ForeColor="#333333">
   <AlternatingItemStyle BackColor="White" ForeColor="#284775" />
...
...
</asp:DataList>
<asp:label CssClass="Treb10Blue" ID="lblMsg" runat="server"></asp:Label> 

然后在代码隐藏中,我有这个:

Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected

  If e.AffectedRows = 0 Then
      lblMsg.Visible = True
      lblMsg.Text = "No records found"
  Else
      lblMsg.Text = ""
  End If

End Sub

我没有收到任何错误,但没有显示消息。

有什么想法可能是错的吗?

【问题讨论】:

  • 看看这个question可以帮助你
  • “e.AffectedRows”的值什么?

标签: asp.net vb.net datalist


【解决方案1】:

此问题已解决。比我想象的更简单的解决方案。

   <FooterTemplate>
     <asp:Label forecolor="#9ACD32" Visible='<%# IIF(DataList1.Items.Count=0 And ddlLocation.SelectedItem.Value<>"0", "True", "False")%>' runat="server" ID="lblMsg" Text="No records found"></asp:Label>
    </FooterTemplate>

【讨论】:

  • 这个有更新吗?当我尝试这个时,它无法通过它的 id 找到数据列表。
【解决方案2】:

您可能想要检查 DataList 中的项目数。试试这个:

Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected

  If DataList1.Items.Count = 0 Then
      lblMsg.Visible = True
      lblMsg.Text = "No records found"
  Else
      lblMsg.Text = ""
  End If

End Sub

【讨论】:

  • 如何将您的解决方案与下拉列表控件联系起来?它起作用了,有点。无论是否有价值,它都会显示该消息。所以,我们有 4 个选项的下拉列表控件。也许如果我可以将它绑定到下拉列表控件,那么如果下拉列表的值为 0 则显示消息。你能帮忙吗?
  • 将其绑定到您的下拉菜单中。
  • 我问,你能帮忙吗?这意味着我不知道如何。如果您不知道自己的情况也没关系,但那是没有答案的。
  • 我怎么会知道你为下拉菜单命名的?
  • 只是说你不知道怎么做。就像我说的,那也可以。你不需要知道名字。如何将代码绑定到任何下拉列表的示例就足够了。我的下拉菜单名为 ddlLocation。
【解决方案3】:

这是MSDN的摘录,也许就是你所看到的:

所有操作都返回受操作影响的行数。 AffectedRows 属性具有与返回值相同的值 Update、Insert 和 Delete 方法。

当调用 Select 方法并将数据源设置为 DataReader模式,所有情况下返回值为0

如果是这样,那么也许你可以颠倒你的逻辑:

  • 默认情况下,显示带有“未找到记录”的标签
  • 为 DataList 的 ItemDataBound 事件创建一个处理程序,并在那里隐藏标签(因为在这种情况下您至少有一条记录)

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2020-08-10
    • 2013-04-30
    • 2012-12-17
    • 2016-04-02
    相关资源
    最近更新 更多