Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / dinamic User Control Loading / 10 сообщений из 10, страница 1 из 1
21.11.2005, 16:46
    #33390622
Viktorianka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
такая беда, на страничке меню, по клику на элементе меню в заданную панель подгружается контрол вот таким макаром:

Control c=Page.LoadControl(controlname);
ContentPanel.Controls.Add(c);
c.DataBind();
Session["Control"]=c;

тут все OK, контрол загрузился, дальше допустим происходит постбэк, чтобы контрол не исчез в PageLoad написала вот такой текст


if (!(Session["Control"]==null))
{
ContentPanel.Controls.Clear();
ContentPanel.Controls.Add((Session["Control"] as UserControl));
}

все вроде работает. Но иногда такой динамически загруженный юзерконтрол глючит. Например у меня есть в юзерконтроле дерево, по клику меняется SelectedItem в дереве и происходит нужное событие. Так вот при динамической загрузке контрола получается что при первом клике все нормально отрабатывается, итем выбирается, событие происходит, а при втором клике получается что курсор обратно перескакивает на итем который выделили до того и событие не происходит. Если тот же UserControl добавлять к страничке статически, то все OK, все нормально работает, события отрабатывают, т.е. дело тут видимо в динамической загрузке юзерконтрола. Где я промахнулась? Может подгружать при постбеке надо как-то по-другому?
...
Рейтинг: 0 / 0
21.11.2005, 17:32
    #33390768
sergee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
задавай контролу одинаковый id при первом создании и при последующих восстановлениях.
...
Рейтинг: 0 / 0
21.11.2005, 17:34
    #33390773
Viktorianka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
т.е. запоминать id а не контрол? так чтоли?
...
Рейтинг: 0 / 0
21.11.2005, 17:43
    #33390805
sergee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
нет, просто убедись, что при восстановлении контрола у тебя ID такой же какой и был когда ты его создавал первый раз.
я сам не пробовал контролы в сессию сохранять, просто первое что приходит в голову, когда при динамическом создании контролов не отрабатывают события - это что при втором создании контрола у него меняется ID
...
Рейтинг: 0 / 0
21.11.2005, 18:08
    #33390869
sergee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
хотя похоже у тебя не из-за этого проблема. ведь первый клик отрабатывается, значит ид тут ни при чём.
...
Рейтинг: 0 / 0
21.11.2005, 18:12
    #33390876
Viktorianka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
id не причем, проверила в полученном HTML-ле, id-шник такм не меняется
...
Рейтинг: 0 / 0
21.11.2005, 20:03
    #33391005
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
Не слишком въехал в проблему, но кажется что-то намудрили тут
Код: plaintext
1.
2.
3.
4.
5.
if (!(Session["Control"]==null))
{
ContentPanel.Controls.Clear();
ContentPanel.Controls.Add((Session["Control"] as UserControl)); 
}
и с постбэком на pageLoad. Смотрите на поверхности решение.
...
Рейтинг: 0 / 0
21.11.2005, 20:53
    #33391056
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
а нафиг вообще держать контрол в сессии? каков смысл?
2Axeleron , присоединяюсь...
_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
22.11.2005, 07:52
    #33391299
Viktorianka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
Лиман Артём, а как иначе сдлеать чтобы он не исчезал при постбеке?
...
Рейтинг: 0 / 0
22.11.2005, 13:51
    #33392381
Viktorianka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dinamic User Control Loading
нашла грабли, надо не контрол в сессии сохраняь, а его название и каждый раз делать Page.LoadControl(ControlName) и ID ему одинаковый устанавливать, иначе контрол при загрузке не инициализируется правильно и у него события пропадают.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / dinamic User Control Loading / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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