powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Загрузка нужных контроллов
4 сообщений из 4, страница 1 из 1
Загрузка нужных контроллов
    #33832986
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В базе есть словарь контроллов, который содержит их имена (из System.Web.UI.WebControls). Положим, пользователь хочет ввести в страницу TextBox, выбирает из словаря, задает для нового поля ввода расположене и другие св-ва - это сохраняется в базе в описании компоновки страницы. Потом, когда страница строится на основе данных из базы, надо как-то "понять", что если мы считали "System.Web.UI.WebControls.TextBox", то надо ввести TextBox, т.е. должен быть какой-то конструктор, которому передается текстовое имя контролла.
Есть ли такой? Как вызывать и где?vo1d
...
Рейтинг: 0 / 0
Загрузка нужных контроллов
    #33833216
Nisus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть конечно, примерно вот так это все делается:            Type classType = typeof(DataGrid).Assembly.CreateInstance(
                "System.Web.UI.WebControls.TextBox", true);
            Control c = classType as Control;
            if (c != null)
            {
                c.ID = "myID";
                this.Controls.Add(c);
            }

typeof(DataGrid) - тут может быть имя любого класса из нужного нам пространства имен, это в общем один из самых простых способов получить нужную сборку, которая потом сможет создать экземпляр нужного нам класса из этого же пространства имен.
...
Рейтинг: 0 / 0
Загрузка нужных контроллов
    #33833450
Nisus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри немного наврал, вот правильный кодControl c = typeof(DataGrid).Assembly.CreateInstance(
"System.Web.UI.WebControls.DataGrid", true) as Control;
if (c != null)
{
c.ID = "myID";
((DataGrid)c).DataSource = new string[]{"1","2","3"};
c.DataBind();
this.Controls.Add(c);
}
...
Рейтинг: 0 / 0
Загрузка нужных контроллов
    #33833453
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Все просто превосходно!

PS: Вы чуть ошиблись - метод CreateInstance возвращает Object, а не System.Type, соответственно, первую строку необходимо модифицировать так
Object  TypeEx = typeof(DataGrid).Assembly.CreateInstance(
                "System.Web.UI.WebControls.TextBox", true);
или вообще так
Control c =  typeof(DataGrid).Assembly.CreateInstance(
                "System.Web.UI.WebControls.TextBox", true) as Control;

PPS: Еще раз огромное спасибо, ибо MSDN огромный и вязкий как Карельские болота, и без таких дельных советов в нем пропадаешь((:
vo1d
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Загрузка нужных контроллов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]