updatepanel - 使页面上的其他控件可见或不可见

时间:2013-02-26 02:23:35

标签: asp.net asp.net-ajax

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

如果没有返回任何结果,我想要显示一条消息 - 说没有找到记录。

麻烦的是让asp:panel(pnlNoUsers)可见选项为true或false(其中包含找不到记录的消息是我正在遇到的问题

我的更新面板代码是:

                <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”可见性属性是不是在改变?

任何人都知道我该怎么做?

谢谢,

3 个答案:

答案 0 :(得分:1)

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

的gridview控件
  

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

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

答案 1 :(得分:0)

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

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

关于btnRefresh点击事件。它会起作用

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