Установка значения свойства для пользовательского элемента управления - C # - PullRequest
1 голос
/ 31 января 2012

Я создал 4 пользовательских элемента управления, которые более или менее имеют одинаковые свойства.Вот пример источника для пользовательского элемента управления:

<div>
    <asp:Label runat="server" ID="LabelPrompt"></asp:Label>
    <telerik:RadComboBox runat="server" ID="ComboBoxInput"></telerik:RadComboBox>
</div> 

Когда страница загружается, мне нужно изменить значение LabelPrompt.Вот что я делаю:

                Control p = LoadControl("~/Parameters/TextBoxParameterUserControl.ascx");                    
                p.GetType().GetProperty("LabelPrompt").SetValue(p, "AAAA", null); 
                PanelParametersList.Controls.Add(p);

Ранее я пытался использовать приведенный ниже код для добавления пользовательского элемента управления, но он не работал.Другой поток предложил использовать приведенный выше код, который работает (с точки зрения добавления элемента управления в представление).

 PanelParametersList.Controls.Add(new TextBoxParameterUserControl());

В любом случае, компилятор жалуется на следующую строку:

p.GetType().GetProperty("LabelPrompt").SetValue(p, "AAAA", null); 

Но это не работает, он говорит: «Объект не установлен на ссылку» .....Что я делаю не так?

ps Я знаю, что супер / подклассификация возможна, но это не то, что мне нужно!

1 Ответ

1 голос
/ 31 января 2012

Вы пробовали что-то подобное (и я надеюсь, что вы намеренно загружаете эти элементы управления во время выполнения?):

TextBoxParameterUserControlic control = LoadControl("~/Parameters/TextBoxParameterUserControl.ascx") as TextBoxParameterUserControl;
if(control != null)
{
    control.LabelPrompt = "AAAA"; 
    PanelParametersList.Controls.Add(p);
}

Конечно, свойство LabelPrompt должно быть public.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...