Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Загрузка нужных контроллов
|
|||
|---|---|---|---|
|
#18+
В базе есть словарь контроллов, который содержит их имена (из System.Web.UI.WebControls). Положим, пользователь хочет ввести в страницу TextBox, выбирает из словаря, задает для нового поля ввода расположене и другие св-ва - это сохраняется в базе в описании компоновки страницы. Потом, когда страница строится на основе данных из базы, надо как-то "понять", что если мы считали "System.Web.UI.WebControls.TextBox", то надо ввести TextBox, т.е. должен быть какой-то конструктор, которому передается текстовое имя контролла. Есть ли такой? Как вызывать и где?vo1d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 14:53 |
|
||
|
Загрузка нужных контроллов
|
|||
|---|---|---|---|
|
#18+
Есть конечно, примерно вот так это все делается: 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) - тут может быть имя любого класса из нужного нам пространства имен, это в общем один из самых простых способов получить нужную сборку, которая потом сможет создать экземпляр нужного нам класса из этого же пространства имен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 15:41 |
|
||
|
Загрузка нужных контроллов
|
|||
|---|---|---|---|
|
#18+
Сорри немного наврал, вот правильный код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); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 16:27 |
|
||
|
Загрузка нужных контроллов
|
|||
|---|---|---|---|
|
#18+
Спасибо! Все просто превосходно! 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 16:27 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=940&tid=1392023]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 311ms |

| 0 / 0 |
