如何从父页面有条件地隐藏usercontrol中的某些控件

时间:2012-09-01 13:59:10

标签: asp.net user-controls

我有一个aspx页面,它有五个面板。每个面板都有一个用户控件。所有五个面板上的用户控件都是相同的。第一个面板中的用户控件是为主要成员收集数据,其余用于辅助成员。我用“>”和“<”自定义按钮从一个面板移动到另一个面板。每当我从主面板移动到辅助面板时,我都想在usercontrol中隐藏两个文本框。当他们移回主面板时,这些文本框应该重新出现。由于按钮位于父页面,请告诉我如何操作。我相信在usercontrol中创建一个事件并从父页面访问它可能会起作用。但不知道该怎么做。或者,请让我知道任何其他方法。

由于

2 个答案:

答案 0 :(得分:1)

您无需在用户控件中为此创建事件。

您需要的只是在用户控件上创建一个公共属性,您可以在使用用户控件时进行设置。

由于您没有提供任何代码,我将只提供一个示例。

public partial class MyWidget: System.Web.UI.UserControl
{
    private bool showPrimary;
    public bool ShowPrimary
    {
        get { return showPrimary; }
        set 
        {
            showPrimary = value;
            txtPK1.Visible = value;
            txtPK2.Visible = value;
        }
    }
}

然后按照以下方式调用它时设置它:

Main Panel:
<uc1:MyWidget ID="MyWidget1" ShowPrimary="true" runat="server" />

Secondary Panel:
<uc1:MyWidget ID="MyWidget1" ShowPrimary="false" runat="server" />

答案 1 :(得分:0)

我不明白,按钮><位于页面中以前进到下一个/上一个控件。然后,您只需处理页面中的click事件并切换UserControls的可见性。

如果您不知道如何从页面控制UserControls内部控件的可见性:

  • 使用UserControl中的属性,例如PrimaryMode。在那里,您可以相应地隐藏/显示TextBoxes。您可以从页面调用这些属性。 PrimaryMode可以是bool类型或自定义枚举类型(如果您想提供多种显示模式)。