2010-11-29 2 views
0

Я хочу добавить элементы управления в мою веб-форму aspx во время выполнения с использованием C#.
Я хотел бы написать общую функцию, которая создаст любой тип управления (например: текстовое поле, макет, кнопка и т. Д.).Общая функция для создания элементов управления во время выполнения

Любые идеи, пожалуйста. Благодаря BB

+0

Вы имеете в виду «время выполнения» в браузере (на стороне клиента) или «время выполнения», как в динамическом режиме на сервере, так что клиент будет видеть обновления только на обновлениях страниц и обратных передачах? – cwap 2010-11-29 23:22:29

ответ

2

Вы можете сделать это, до тех пор, как типы управления вы хотите использовать все имеют конструктор по умолчанию.

T AddControl<T>() where T : WebControl, new() 
{ 
    T ctrl = new T(); 
    ... 
    return ctrl; 
} 
+0

Дэвид, спасибо. Я хочу проверить, прошел ли элемент управления в текстовое поле и задал некоторые свойства. Ниже я вставил код, который я написал, но это неверно. Где я иду не так. if (ctrl.Equals (System.Web.UI.WebControls.TextBox)) {... установить некоторые свойства} – BumbleBee 2010-11-30 00:14:44

3

Я полагаю, вы могли бы сделать что-то вроде этого:

public void CreateControl<W>(Func<W> controlConstructor) where W : WebControl 
{ 
     W control = controlConstructor(); 

     //add control and configure it, etc etc 
} 
+0

Возможно также простой `CreateControl (), где T: WebControl, new()` для тех элементов управления, которые имеют простые конструкторы. Кроме того, вы могли бы, вероятно, перейти в экземпляр `Control`, который представляет родительский объект в графе, в который вы добавляете свой вновь созданный элемент управления в свою коллекцию` Controls`? – 2010-11-29 23:24:46

2

Добавить TextBoxes управления в PlaceHolder

private void CreateTextBoxes() 
{ 

     for (int counter = 0; counter <= NumberOfControls; counter++) 
     { 
      TextBox tb = new TextBox(); 
      tb.Width = 150; 
      tb.Height = 18; 
      tb.TextMode = TextBoxMode.SingleLine; 
      tb.ID = "TextBoxID" + (counter + 1).ToString(); 
      // add some dummy data to textboxes 
      tb.Text = "Enter Title " + counter; 
      phTextBoxes.Controls.Add(tb); 
      phTextBoxes.Controls.Add(new LiteralControl("<br/>")); 

     } 

    } 

В CreateTextBoxes метод I цикла по номерам «N» элементов управления, которые мы хочет создать динамически в phTextBoxes заполнителем.

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