如何在datalist中显示“No records found”?

时间:2013-10-09 20:52:44

标签: asp.net vb.net datalist

这段代码在表面上看起来很简单,但我想在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

我没有收到任何错误,但邮件没有显示。

任何想法可能出错?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

这是MSDN的摘录,也许是您所看到的内容:

  

所有操作都返回受操作影响的行数。   AffectedRows属性与返回值具有相同的值   更新,插入和删除方法。

     

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

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

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

答案 2 :(得分:0)

您可能想要检查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