从代码隐藏设置用户控件的启用属性

时间:2013-12-04 16:51:22

标签: asp.net webforms c#-3.0

自从我使用WebForms以来已经有一段时间了,所以在旧网站上工作时我需要复习。

我在页面上有一个userControl,我需要以编程方式设置启用状态

<%@ Register Src="CalandarControl.ascx" TagName="CalandarControl" TagPrefix="uc" %>

我在C#代码中有这个,但是这里没有Enabled。我错过了什么?

if (c is UserControl)
{
    var x = c.GetType();
    if (x.Name == "calendarcontrol_ascx")
    {
        ((UserControl)c).Enabled = true;
    }
}

由于

2 个答案:

答案 0 :(得分:2)

您应该在代码前端放置一些将控件放在页面上的内容,例如:

<uc:CalendarControl ID="dtePrepaymentExpiresDate" FieldName="Prepayment expires date" runat="server" Enabled="false" />

然后在后面的代码中,您可以按如下方式设置此自定义属性:

dtePrepaymentExpiresDate.Enabled = true;

如果您确实需要在循环中执行此操作,则需要将c转换为CalendarControl而不是UserControl,因为CalendarControl具有属性{{1正常Enabled没有。

UserControl

答案 1 :(得分:0)

你可以在usercontrol中定义一个面板,用于控制用户控件的所有控件,然后定义一个名为bool(panelMain.Enabled;)的属性,并从你的页面设置它,

在用户控件ascx中

<asp:panel runat="server" id="panelMain" Enabled="false">

<!-- define ur other controls between panel-->

</asp:panel>

在usercontrol ascx.cs

public bool Enabled
{
    get { return ucSample1.Enabled;  }
    set { ucSample1.Enabled = value; }
}

在页面首先注册你的usercontrol,然后从后面的代码设置Enabled属性.... 例如

 protected void Page_load(object sender,EventArgs e )
 {
     ucSample.Enabled = true;
 }
像喝水一样简单:))