这段代码在表面上看起来很简单,但我想在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
我没有收到任何错误,但邮件没有显示。
任何想法可能出错?
答案 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 。
如果是这样,那么也许你可以改变你的逻辑:
答案 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