Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Controls.Add / 10 сообщений из 10, страница 1 из 1
07.07.2005, 12:17
    #33154183
Aeon Technologies
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
Привет!
Такая вот проблема: Page.aspx, в нее посредством Controls.Add загружается контрол ControlPage (страницы). В ControlPage у нас есть свойство Title.
Вопрос как из Page.aspx получить Title из ControlPage, при условии, что ControlPage может менятся динамически. То есть таких ControlPage может быть сотня.

Заранее благодарю.
...
Рейтинг: 0 / 0
07.07.2005, 21:01
    #33155715
Aeon Technologies
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
вопрос снят.
...
Рейтинг: 0 / 0
11.07.2005, 18:14
    #33160052
guestyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
ответ в студию
...
Рейтинг: 0 / 0
12.07.2005, 17:31
    #33162030
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
guestyyyответ в студию
Все контролы надо добавлять на страницу не динамически типа Controls.Add(), а статически в конструкторе. Иначе жди проблем. Этим-то страницы и отличаются от контролов, в которых динамическое добавление - обычная практика. Дело в том, что контролы добавляются правильно только в CreateChildControls(), а эта процедура используется при создании элементов управления. В принципе, её можно использовать и на страницах, но при этом сложность программы неоправданно возрастает, это всё равно, что применять GoTo, хотя я нашёл один случай, при котором применение GoTo может быть оправдано (но всё равно не рекомендуется наверно).
...
Рейтинг: 0 / 0
12.07.2005, 17:54
    #33162086
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
Max ProВсе контролы надо добавлять на страницу не динамически типа Controls.Add(), а статически в конструкторе. Иначе жди проблем.
всегда добавлял контролы динамически и ни каких проблем не испытывал...
...
Рейтинг: 0 / 0
12.07.2005, 18:10
    #33162123
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
profil Max ProВсе контролы надо добавлять на страницу не динамически типа Controls.Add(), а статически в конструкторе. Иначе жди проблем.
всегда добавлял контролы динамически и ни каких проблем не испытывал...

аналогично
...
Рейтинг: 0 / 0
12.07.2005, 22:10
    #33162365
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
profilвсегда добавлял контролы динамически и ни каких проблем не испытывал...
Куда мне до тебя!
:-)
Проблемы следующие (они решаемы, но геморойно)
1. Теряется ViewState
2. Повышается вероятность якобы неверного формирования дерева контролов. Эта ошибка может возникнуть внезапно и на пустом месте (видимо недоделка Микрософта). Причём чем сложнее сценарий, тем больше вероятность.
Способ решения: или втупую, восстанавливая дерево контролов при каждом постбеке в Page_Load(), и вылавливая ViewState; или по науке через CreateChildControls().
Поскольку и то и другое гиморно, советую обойти гору.
...
Рейтинг: 0 / 0
13.07.2005, 16:37
    #33164129
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
Поэтому единственное применение Controls на странице я вижу такое:
if(oDocument.Error!="")
Код: plaintext
1.
2.
3.
4.
{
	Controls.Clear();
	Response.Write(oDocument.Error);
	return;
}
Ну типа есть форма, выдающая документ по его номеру. Если при выводе информации возникла ошибка, то документ уже не надо выводить, а надо сообщить об ошибке. Вот этот код проверяет нет ли ошибки (в моём случае объект oDocument заполняется посредством Вэб-сервиса). И если есть ошибка, то очищается форма и процедура завершает своё выполнение.
...
Рейтинг: 0 / 0
17.07.2005, 16:04
    #33170254
Aeon Technologies
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
отвечаю. идея состоит в том, что бы создать класс, в котором есть свойство Title... ну в моем случае это еще десяток свойств, типа Description и Keywords....

создается контрол который наследуется от этого класса.... потом загружается контрол

Код: plaintext
1.
2.
3.
			string src = string.Format("Pages/{0}.ascx",page);
			ControlToLoad = LoadControl(src);
			panelPage.Controls.Add(ControlToLoad);

обратите внимание загрузку делаю в панель...

потом вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
		private void Page_PreRender(object sender, System.EventArgs e)
		{
			MyProjectName.Classes.PageText ControlToRead = (MyProjectName.Classes.PageText)ControlToLoad;
			if(ControlToRead != null)
			{
				this.Title = ControlToRead.Title;
				this.Keywords = ControlToRead.Keywords;
			}
		}

таким образом извлекаем из контрола тайтл.
...
Рейтинг: 0 / 0
17.07.2005, 16:08
    #33170256
Aeon Technologies
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Controls.Add
кстати ВСЕ контролы работают как полноценные .ASPX, _НИКАКИХ_ проблем замечено не было, могу ошибатся, не помню просто, а смотреть в лом, проблемы с виевстейтом решаются использованием панели. В чем там фишка я не помню, но в моем ـОЗУ такое крутится :)

Метода загрузки контролов опробована в десятке проектов.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Controls.Add / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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