2013-12-04 2 views
2

Прошло некоторое время с тех пор, как я работал над WebForms, поэтому мне нужно переподготовку при работе на старом сайте.Установите свойство Enabled для UserControl From CodeBehind

У меня есть 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; 
    } 
} 

Благодаря

+1

'Enabled' является [не свойство] (HTTP: // msdn.microsoft.com/en-us/library/System.Web.UI.UserControl_properties(v=vs.110).aspx) 'UserControl'. Что ты пытаешься сделать? Кроме того, в вашем фрагменте кода вы используете 'c', но затем заканчиваете лить' control' как 'UserControl'. – MikeSmithDev

+0

Эй, Майк. Я пытаюсь настроить элемент управления, если пользователь находится в определенной роли. В настоящее время у них есть свойство с включенным контролем, установленное на странице aspx на уровне управления . «Контроль» был типом от предыдущих попыток кода. это на самом деле c – Tim

+0

Я вижу ... обновленный ответ. – MikeSmithDev

ответ

2

Вы должны иметь что-то на код фронта, который помещает элемент управления на странице, как:

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

Затем в коде позади, вы можете установить это свойство пользователя следующим образом:

dtePrepaymentExpiresDate.Enabled = true; 

Если вам действительно нужно сделать это в цикле, то вам нужно бросить c как CalendarControl, а не UserControl, поскольку CalendarControl имеет свойство Enabled, а нормальное UserControl - нет.

((CalandarControl)c).Enabled = true; 
+0

Спасибо, Майк. Я пытался использовать CalandarControl до UserControl, и он не смог найти ссылку. Элемент управления имел свойство Enabled, и теперь выясняется, что я не знаю, как правильно использовать CalendarControl. Dooh. Это был хороший ответ, спасибо снова. – Tim

+0

Или если вы просто устанавливаете его роль ... пропустите цикл и оператор 'if' и просто сделайте что-то вроде' dtePrepaymentExpiresDate.Enabled = User.IsInRole («bigAdmin»); «И да, я заметил, что опечатка в имя управления тоже;) – MikeSmithDev

+0

На странице есть несколько CalendarControls, и все они связаны одной и той же логикой роли, поэтому мне легче использовать как можно больше дженериков – Tim

0

вы можете определить панель в UserControl ведьмой cotaines все элементы управления пользовательского элемента управления, а затем определить свойство Enabled назван 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 { ucSample1.Enabled; } 
    set { ucSample1.Enabled = value; } 
} 

в странице сначала зарегистрироваться U г UserControl, а затем установить Enabled свойство из кода позади ....
, например

protected void Page_load(object sender,EventArgs e) 
{ 
    ucSample.Enabled = true; 
} 

так просто, как пить воду :))

Смежные вопросы