Динамическая генерация контролов на странице...
От: Ryf  
Дата: 09.12.04 09:10
Оценка:
Есть база данных, где хранятся параметры контролов(тип контрола — textbox, dropdownlist и др, ширина, высота ну и так далее). При создании контрола я прохожу по этой базе выдираю его тип и свойства, далее такой код...



 switch(dr["ASPTYPE"].ToString().Trim()) 
 {
   case "WebTextEdit":
    // создаем webtextedit
        ...
   case "DropDownList"
        // создаем dropdownlis

  //  ну и так далее
 }


1. Можно ли не использовать switch а создать экземпляр класса Control и потом создавать объект на основе типа который передан, т.е. что-то похожее на это:


Control newControl;
string controlType = dr["ASPTYPE"].ToString().Trim();
newControl = new ( controlType ?????)



2. после создания контрола я прописываю его свойства т.е.

case "webtextedit":
  WebTextEdit wte = new WebTextEdit();

  for (int j = 0; j < sdProps.Count; j+=2)
  {
    switch(sdProps[j])
    {
      case "Width":       wte.Width = Convert.ToUInt16(sdProps[j+1]); break;
      case "Height":      wte.Height = Convert.ToUInt16(sdProps[j+1]);    break;
      case "BorderColor":    wte.BorderColor = Color.FromName(sdProps[j+1]); break;
      case "BorderWidth":    wte.BorderWidth = Convert.ToUInt16(sdProps[j+1]); break;
      // и т.д..
    }
  }

Можно ли контролу отпрвить сразу словарик в виде ("наименование свойства", "значения свойства") чтобы избавиться от switch или как-то получить перечисление свойств контрола...
Динамическая генерация контролов на странице...
От: Аноним  
Дата: 09.12.04 09:59
Оценка:
Можно воспользоваться Hahtable и reflection.
Все должно быть просто, очень просто, настолько просто — насколько это возможно.

Оренбургское сообщество .NET разработчиков


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Динамическая генерация контролов на странице...
От: Grey-  
Дата: 09.12.04 13:27
Оценка:
Здравствуйте, Ryf, Вы писали:

Ryf>Есть база данных, где хранятся параметры контролов(тип контрола — textbox, dropdownlist и др, ширина, высота ну и так далее). При создании контрола я прохожу по этой базе выдираю его тип и свойства, далее такой код...


Тогда можно вообще хранить всю страницу в базе и переопределять рендер на себя
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.