0

我正在使用更新面板在页面上显示一些结果,它工作正常,没有问题。

如果虽然没有返回结果,但我希望显示一条消息 - 说没有找到记录。

问题是让 asp:panel(pnlNoUsers) 可见选项为真或假(其中包含未找到记录消息是我遇到的问题

我的更新面板代码是:

                <asp:UpdatePanel ID="pnlCust" runat="server">
                    <ContentTemplate>
                        <asp:Panel ID="pnlNoUsers" runat="server" visible="false">
                            <div class="inner-page-title">
                                <h2>
                                    No records found.</h2>
                            </div>
                        </asp:Panel>
                        <%=show_cust()%>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="btnRefresh" />
                    </Triggers>
                </asp:UpdatePanel>

show_cust() 函数只返回一个字符串,该字符串将显示在页面上:

    If bHasUsers = False Then
        pnlNoUsers.Visible = True
        Return ""
    End If
    pnlNoUsers.Visible = False
    Return strUsers & "</ul>"

面板“pnlNoUsers”的可见性属性没有改变吗?

有谁知道我该怎么做?

谢谢,

4

3 回答 3

1

我不知道您的要求的复杂性,但您可以通过使用数据控件完全跳过条件逻辑。您可以使用具有

您可以使用的 EmptyDataText 属性。 MSDN:Gridview EmptyDataText 属性

您可以使用 DataSource 和 dataBind 属性手动将 gridview 控件与数据绑定。

于 2013-02-26T05:35:23.350 回答
0

为什么要使用函数 show_cust()。您可以在按钮单击操作中添加功能。因为最初面板是不可见的。它需要在根据条件单击按钮时可见。所以添加功能性`

If bHasUsers = False Then
        pnlNoUsers.Visible = True
        Return ""
    End If
    pnlNoUsers.Visible = False
    Return strUsers & "</ul>"

在 btnRefresh 点击事件上。它会工作

于 2013-02-26T04:43:37.727 回答
0

如果没有您的按钮单击事件,就很难确定您可能出错的地方。不过有几个想法:将 UpdateMode 设置为 Conditional,这是一个包含更新面板的正常模式,摆脱您的内联响应写入,这不是处理 ASP.NET 数据显示的好方法,并添加一个 Literal 标签可以渲染用户的列表。正如 Damien 所提到的,我会使用 ListView、Repeater 或 GridView(按此顺序)来呈现您的用户列表,而不是在代码中生成无序列表并将其写入浏览器。

<asp:UpdatePanel ID="pnlCust" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Panel ID="pnlNoUsers" runat="server" Visible="false">
            <div class="inner-page-title">
                <h2>No records found.</h2>
            </div>
        </asp:Panel>
        <asp:Literal ID="CustomerListLiteral" runat="server" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnRefresh" />
    </Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnRefresh" runat="server" OnClick="btnRefresh_Click" />

在按钮单击事件中处理您的更新面板工作。我敢打赌,您内联的响应写入不会触发更新面板工作。这应该做你想要的。

Protected Sub btnRefresh_Click(sender As Object, e As EventArgs)
    Dim bHasUsers As Boolean = False
    Dim strUsers As String = String.Empty

    If bHasUsers = False Then
        pnlNoUsers.Visible = True
    Else
        pnlNoUsers.Visible = False
        CustomerListLiteral.Text = strUsers & "</ul>"
    End If

    ' Force an update refresh if necessary, but this shouldn't be needed
    pnlCust.Update()
End Sub
于 2013-02-26T08:47:27.773 回答