代码之家  ›  专栏  ›  技术社区  ›  ptownbro

如何从页面上的UserControl中的控件关闭页面上的Panel控件

  •  0
  • ptownbro  · 技术社区  · 3 年前

    我正试图关闭ASP中的面板控件。NET网页,方法是单击同一网页上的用户控件中的链接按钮。我已经尝试了在这个网站和其他网站上找到的解决方案,但都无法使用。

    有什么想法吗?

    下面的代码示例。

    主页 。它有一个包含标签按钮的用户控件。我想单击“标签”按钮并关闭面板。

    Page HTML:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="default.aspx.vb" Inherits="_default" %>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>My Sample Page</title>
    </head>
    <body>
        <form id="form1" runat="server" class="container-fluid">
            <UserControl:Header runat="server" />
    
            <asp:Panel ID="Panel1" runat="server"></asp:Panel>
        </form>
    </body>
    </html>
    
    Page Code Behind:
    Partial Class _default
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        End Sub
    End Class
    

    用户控件 。我想单击用户控件中的“LinkButton1”对象,然后在页面中隐藏“Panel1”对象。

    User Control HTML:
    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="header.ascx.vb" Inherits="shared_usercontrols_header" %>
    
    <asp:LinkButton ID="LinkButton1" runat="server">My Link Button</asp:LinkButton>
    
    
    User Control Code Behind:
    Partial Class _default
        Inherits System.Web.UI.Page
    
        Private Sub LinkButton1_Click(sender As Object, e As EventArgs) Handles LinkButton1.Click
            Panel1.Visible = False
        End Sub
    End Class
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   Albert D. Kallal    3 年前

    好吧,如果您直接使用控件对象和名称,那么这将在编译时解决。

    但是,我们不提前知道您可能在该页面上有Panel1,也可能没有。

    所以,你必须在页面上“寻找”面板。

    因此,这应该起作用:

    Protected Sub LinkButton1_Click(sender As Object, e As EventArgs) Handles LinkButton1.Click
    
    
        Dim MyPanel As Panel = Page.FindControl("Panel1")
    
        MyPanel.Visible = False
    
    
    End Sub