powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Создание контрола с событием.
28 сообщений из 28, показаны все 2 страниц
Создание контрола с событием.
    #37798275
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Только недавно начал осваивать ASP, и с последовательностью выполнений событий до конца разобраться не могу.
Подскажите, можно ли сделать рабочей, следующую логику.
Есть навигационное меню NavigationMenu. Хочу создать объект типа LinkButton в зависимости от пункта меню на которое нажали. Как я понимаю событие к контролу можно создать не позже чем в Page_Load, но данные с события клика по навигационному меню на серверной стороне обновляются позже чем начинается загрузка страницы. Соответственно данный код работает не корректно, т.е. чтобы получить то действие которое нужно, надо два раза нажать на кнопку.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
protected void Page_Load(object sender, EventArgs e)
        {
            if (NavigationMenu.SelectedValue == "Справочник")
            {

                    LinkButton lnk1 = new LinkButton();
                    lnk1.ID = "linkbutton10";
                    lnk1.Text = "текст";
                    lnk1.Click += new EventHandler(this.Button1_Click);
                    Literal liter = new Literal();
                    liter.Text = "</br>";
                    ContentPlaceHolder2.Controls.Add(liter);
                    ContentPlaceHolder2.Controls.Add(lnk1);

            }
        }


 protected void Button1_Click(object sender, EventArgs e)
        {
//код
        }



Буду благодарен за помощь в прояснении этого вопроса.

С Уважением.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798440
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего вы что то не так делаете.
я вижу 2 варианта:

Либо создавайте всё заранее.

Либо при нажатие на кнопку пишите что то в сессию и делайте Response.Redirect, далее в PageInit создавайте что надо.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798464
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55,

событие нужно привязывать всегда, вне зависимости от условий, т.к. asp.net webforms заново все инициализирует, включая события
если что, есть такая тема как __EVENTTARGET :) почитайте http://msdn.microsoft.com/ru-ru/magazine/cc163512.aspx, на всякий случай
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798495
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SanSYS
почему то по вашей ссылке перейти не могу- "Содержимое не найдено", но по eventtarget почитаю.

Антон L
Возможно я немного не правильно выразился или не до конца понял ваш комментарий

Насколько я понимаю Page_Init выполняется раньше Page_Load...
Попробую более подробно описать проблему.

Код указанный в первом посте работает по следующему принципу:

При нажатии на ссылку Нафигационного меню "справочник", условие не срабатывает, т.е. .SelectedValue = ""

Выполняется Page_Load, а потом обновляется SelectedValue="справочник". Т.е. при следующем клике(на любом пункте меню) элемент создастся.

Т.е. получается так.
1. Я кликаю на пункте меню
2. Загружается страница заново
3. И только потом происходит обновление SelectedValue

А надо бы, чтобы сначала обновилось SelectedValue, а потом выполось событие Page_Load.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798545
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55SanSYS
почему то по вашей ссылке перейти не могу- "Содержимое не найдено", но по eventtarget почитаю.


Запятая http://msdn.microsoft.com/ru-ru/magazine/cc163512.aspx

давай так - размести кнопу на странице, и меняй ее Visible от условий, 100% работает, а динамическое создание контролов должно остаться в файле .design.cs, т.е. ты его сейчас не должен писать
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798570
Cy4eHoK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос такой же: как правильно прописать событие на динамический контрол (клик на элемент меню -> добавляется контрол -> клик на этот контрол -> выполнение действия)?

То что SelectedValue не покатит это понятно, т.к. это возвращает предидущий селектнутый айтим.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798571
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а не проще ли играться со свойством visibleу готового компонента чем каждый раз его создавать а?:)
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798575
Cy4eHoK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SanSYSdar55SanSYS
почему то по вашей ссылке перейти не могу- "Содержимое не найдено", но по eventtarget почитаю.


Запятая http://msdn.microsoft.com/ru-ru/magazine/cc163512.aspx

давай так - размести кнопу на странице, и меняй ее Visible от условий, 100% работает, а динамическое создание контролов должно остаться в файле .design.cs, т.е. ты его сейчас не должен писать

Вы же понимаете, что это не дело :(
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798581
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример упрощенный. Если бы была нужна одна кнопка, то вполне возможно.
А если мне надо создать неизвестное количество контролов(например содержание справочника), подгружая данные по контролам из таблицы базы данных.
Другие варианты списка контролов я вроде как представляю.
Но на данный момент я на уровне изучения ASP и пытаюсь понять механизм работы. А по моей обычной человеческой логике SelectedValue создано же не для того, чтобы узнавать, что в прошлый раз было нажато пользователем....


Спасибо за ссылку, теперь работает. Сам почему-то запятую не заметил :)
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798626
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55,

Основной механизм работы WebForm основан на Событиях
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798643
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что Вам надо использовать метод LoadControl вместо new что-то там :)
Если Вы чётко опишите задачу, будет проще дать точный ответ, упрощать пример не стоит.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798663
Cy4eHoK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAДумаю, что Вам надо использовать метод LoadControl вместо new что-то там :)
Если Вы чётко опишите задачу, будет проще дать точный ответ, упрощать пример не стоит.

Я так понял, что задача такая же как и у меня:

Вопрос такой же: как правильно прописать событие на динамический контрол (клик на элемент меню -> добавляется контрол -> клик на этот контрол -> выполнение действия)?
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798713
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cy4eHoK Вопрос такой же: как правильно прописать событие на динамический контрол (клик на элемент меню -> добавляется контрол -> клик на этот контрол -> выполнение действия)? Ладно, будем вытягивать подробности :) UserControl, или WebControl?
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798777
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cy4eHoKskyANAДумаю, что Вам надо использовать метод LoadControl вместо new что-то там :)
Если Вы чётко опишите задачу, будет проще дать точный ответ, упрощать пример не стоит.

Я так понял, что задача такая же как и у меня:

Вопрос такой же: как правильно прописать событие на динамический контрол (клик на элемент меню -> добавляется контрол -> клик на этот контрол -> выполнение действия)?

смотреть с 40 минуты
http://www.techdays.ru/videos/3290.html
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798910
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, я так понимаю это вебконтрол.


Значит задача в чистом виде:
Есть элемент NavigationMenu(например список справочников с именами "справочник1", "справочник2".....)
При нажатии на пункт меню из базы данных должен тянуться собственный список LinkButton и эти контролы добавляются в ContentPlaceHolder2.

Т.е. должен генерироваться свой список linkButton, в ContentPlaceHolder2, в зависимости от выбора в NavigationMenu.


Я предполагал использование свойства SelectedValue.
Но возникает проблема, обновление этого свойства происходит после события Page_Load. А соответственно последний этап в котором можно создать событие это Page_Load....


Надеюсь задачу описал понятно.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37798959
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55skyANA, я так понимаю это вебконтрол.


Значит задача в чистом виде:
Есть элемент NavigationMenu(например список справочников с именами "справочник1", "справочник2".....)
При нажатии на пункт меню из базы данных должен тянуться собственный список LinkButton и эти контролы добавляются в ContentPlaceHolder2.

Т.е. должен генерироваться свой список linkButton, в ContentPlaceHolder2, в зависимости от выбора в NavigationMenu.


Я предполагал использование свойства SelectedValue.
Но возникает проблема, обновление этого свойства происходит после события Page_Load. А соответственно последний этап в котором можно создать событие это Page_Load....


Надеюсь задачу описал понятно.

вот должно помочь
http://www.sql.ru/blogs/ramin/1276
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799061
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deza, я посмотрел код в статье, не поможет. Там не создаются события.

Конечно контрол можно создать в событии NavigationMenu.Click, и они даже будут выглядеть нормально, т.е. как настоящие LinkButton'ы :)

Но вся засада в том, что присваивать им события в NavigationMenu_Click бессмысленно, так как они неинициализируются после события Page_Load.

А в статье по вашей ссылке там не создаются никакие события.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799094
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55,

что ты хочешь делать по событию?
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799103
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда происходит событие Button1_Click(object sender, EventArgs e)(или какой другой клик) - Вы знаете что вам надо создавать в PageLoad?

пишите что то в сессию
делайте Response.Redirect на эту же страницу - у вас снова будет событие PageLoad.
анализируете переменную в сессии и создаёте то что надо.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799107
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55При нажатии на пункт меню из базы данных должен тянуться собственный список LinkButton и эти контролы добавляются в ContentPlaceHolder2.Список LinkButton из базы данных, Вы шутите? :) Вы меню пытаетесь таким способом построить, или раскрыть подменю, или что?
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799448
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Антон L, да что-то в этом плане я и предвидел, попробую вечером, спасибо.

skyANA, вы просили описать задачу, задача есть, а решения как бы нет. Но дискуссия по поводу самой постановки задачи это не то, что хотелось бы ;)
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799778
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55skyANA, вы просили описать задачу, задача есть, а решения как бы нет. Но дискуссия по поводу самой постановки задачи это не то, что хотелось бы ;)Решение?
Пожалуйста:
- кладём Repeater, в ItemTemplate ему декларативно указываем LinkButton;
- по клику получаем данные из базы данных;
- заносим их в Repeater.DataSource, вызываем Repeater.DataBind

У меня просто есть подозрение, что Вы не в том направлении двигаетесь :) И я не хочу обсуждать постановку задачи (Вы не поставили задачу, Вы отрывками рассказываете как её решаете), я хочу услышать задачу общими словами, без привязки к реализации.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799787
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

+1
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37799952
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA
Спасибо за вариант, не могу сказать что попробовал, я так сразу это не сделаю, так что почитаю в выходные немного о том что вы написали, и попробую реализовать :)

Как я и писал с самого начала, конкретной задачи нет, у меня есть большая и толстая книга, по которой я стараюсь освоить ASP.

Да, вы правы, я пока еще точно не знаю в каком варианте лучше реализовать меню, хотя конечно предположения есть, но к данному вопросу это отношения не имело.

Я хотел попробовать реализовать форму с динамическими контролами, и столкнулся с проблемой нелогичной с моей точки зрения отработкой событий.

Вот и задал вопрос. Суть вопроса такова, что контролы( не только навигационное меню) не могут проверить свои свойства типа selectedvalue до перезагрузки страницы, т.е. могут в событии клик, но создать после этого динамический контрол с событием уже невзможно(т.к. Page_Load уже произошло).

А пример был чисто гипотетический.
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37800049
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dar55, аааа, вот оно что :) прочитайте в Вашей большой и толстой книге по ASP.NET про жизненный цикл страницы, тогда всё станет понятно и логично... если не станет, то могу объяснить на пальцах :)
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37800061
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь разберём этот случай:
Cy4eHoK Вопрос такой же: как правильно прописать событие на динамический контрол (клик на элемент меню -> добавляется контрол -> клик на этот контрол -> выполнение действия)?
Элемент меню - это ссылка вида:
а. mysite.ru/mypage.aspx (тут у нас грузится страница целиком, ничего создавать не надо);
б. mysite.ru/mypage.aspx?menuItem=2
- в OnInit смотрим Request.QueryString["menuItem"], создаём нужные контролы, подписываемся на их события;
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37800334
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAdar55, аааа, вот оно что :) прочитайте в Вашей большой и толстой книге по ASP.NET про жизненный цикл страницы, тогда всё станет понятно и логично... если не станет, то могу объяснить на пальцах :)
Не думаю что у него есть большая толстая книга
...
Рейтинг: 0 / 0
Создание контрола с событием.
    #37801762
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
найдите в сети курс по ASP.NET с Гайдаром Магдануровым от intuit, он там в конце третьего ролика разбирает почти ваш вариант.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Создание контрола с событием.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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