Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка клика по динамически созданной кнопке, кнопка рисуется но вот клик по ней игнор 
V
    Опции темы
JaguarSmith
  Дата 29.4.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: 1
Всего: 1



Здарвствуйте!

Сделал код который должон добавлять на плэйсхолдер кнопку и обрабатывать клик по ней но почему-то код не работает... smile 
Код

            Dim AutoriseBTN As New System.Web.UI.WebControls.Button

            AutoriseBTN.CssClass = "TextBox"
            AutoriseBTN.Text = "Проверить код"
            AutoriseBTN.Style.Add("LEFT", "390px")
            AutoriseBTN.Style.Add("TOP", "160px")
            AutoriseBTN.Style.Add("position", "absolute")
            AutoriseBTN.Style.Add("z-index", "110")

            AddHandler AutoriseBTN.Click, AddressOf AutoriseBTN_Click
            Placeholder1.Controls.Add(AutoriseBTN)
 
PM MAIL YIM   Вверх
ivashkanet
Дата 29.4.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Не знаю как в VB.Net (Тебе в соседний форум), но в C# делается так
Код

this.button1.Click += new System.EventHandler(this.button1_Click);

+= добавляет новый обработчик к событию Click

Добавлено @ 19:11 
Раскопал в рефлекторе такую штуку:
Код

self.button1.Click += @new EventHandler(self,button1_Click);
 
PM MAIL WWW ICQ   Вверх
JaguarSmith
Дата 29.4.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: 1
Всего: 1



Дык вот AddHandler делает в VB тоже самое по идее.
Я немогу понять, почему событие не срабатывает я ведь явно сказал что при клике кнопки выполнять AutoriseBTN_Click
По идее регистрировать новое событие для кнопки не надо - оно ведь наследуется или нет?

Зы. Здесь написал именно потому что все происходит на asp.NET страничке - а тама обычно есть своя специфика... 

http://leaders.mtcentr.ru/user.aspx - вот тут на второй странице мастера все и происходит... 

Это сообщение отредактировал(а) JaguarSmith - 29.4.2006, 20:22
PM MAIL YIM   Вверх
ivashkanet
Дата 30.4.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Не то отрефракторил, сорри. Добавление события на VB выглядит так:
Код
AddHandler Me.button1.Click, New EventHandler(AddressOf Me.button1_Click)
 
Может в этом и проблема, что ты не поставил New EventHandler(? 
PM MAIL WWW ICQ   Вверх
JaguarSmith
Дата 30.4.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: 1
Всего: 1



Сделал вот так:
Код

AddHandler AutoriseBTN.Click, New EventHandler(AddressOf AutoriseBTN_Click) ' Всякие "Me." и "This." vs отверг как класс! 8 /

НО похоже все-равно не работает...

Может я просто принципиально делаю что-то не так?

У мну при загрузке в плейсхолдере первый шаг мастера, Далее когда введены и проверены данные происходит Placeholder1.Controls.Clear() и в этом жы плейсхолдере рисуется второй шаг мастера с этой самой кнопкой. Но вот при нажатии на кнопку вместо обработки события происходит что-то странное - в плейсхолдер опять грузится содержание шага 1... smile 

Плэйсхолдер правда принудительно натянут на первый шаг мастера:
Код

<asp:placeholder id="Placeholder1" runat="server">

<asp:textbox id="TextBox1" style="Z-INDEX: 101; LEFT: 248px; POSITION: absolute; TOP: 64px" runat="server"
            CssClass="TextBox" Width="304px"></asp:textbox>

..... И так далее .....

</asp:placeholder>
  

Это сообщение отредактировал(а) JaguarSmith - 30.4.2006, 14:53
PM MAIL YIM   Вверх
ivashkanet
Дата 30.4.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



А у мну все работает  smile 
Код

        Button AutoriseBTN = new Button();
        AutoriseBTN.CssClass = "TextBox";
        AutoriseBTN.Text = "Проверить код";
        AutoriseBTN.Style.Add("LEFT", "390px");
        AutoriseBTN.Style.Add("TOP", "160px");
        AutoriseBTN.Style.Add("position", "absolute");
        AutoriseBTN.Style.Add("z-index", "110");
        AutoriseBTN.Click += new EventHandler(btn_click);
        PlaceHolder.Controls.Add(AutoriseBTN);

Правда на C# и без хитростей:

Цитата(JaguarSmith @  30.4.2006,  14:46 Найти цитируемый пост)
У мну при загрузке в плейсхолдере первый шаг мастера, Далее когда введены и проверены данные происходит Placeholder1.Controls.Clear() и в этом жы плейсхолдере рисуется второй шаг мастера с этой самой кнопкой. Но вот при нажатии на кнопку вместо обработки события происходит что-то странное - в плейсхолдер опять грузится содержание шага 1...  


P.S. Слушай... оно скорее всего так:
При отправке клика на обработку ASP.NET перегружает страницу и из-за этого и начинается опять первый шаг.
Пожно проверять свойство Page.IsPostBack, либо, если шагов больше 2, то введи переменную Step в которой и считай текущий шаг  
А далше все if-ом или switch-ом smile  
PM MAIL WWW ICQ   Вверх
Exception
Дата 30.4.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 9
Всего: 186



Цитата(ivashkanet @  30.4.2006,  12:24 Найти цитируемый пост)
Не то отрефракторил, сорри.


Просьба не использовать понятие рефакторинг в промышленных целях smile 


Цитата(JaguarSmith @  30.4.2006,  15:46 Найти цитируемый пост)
style="Z-INDEX: 101; LEFT: 248px; POSITION: absolute; TOP: 64px"


Ужас, ну и код.


Первый код полностью правильный. Проблема в чём-то другом.

 
PM   Вверх
JaguarSmith
Дата 30.4.2006, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: 1
Всего: 1



Цитата(Exception @  30.4.2006,  19:07 Найти цитируемый пост)
Ужас, ну и код.

Ну вот так vs представляет себе хороший код, я конечно понимаю, что по уму его надь ручками но времени небыло - хотелось быстро набросать а потом доделать при случае, а вот не получилось... 8 (


Цитата(Exception @  30.4.2006,  19:07 Найти цитируемый пост)
Проблема в чём-то другом.


Вот я и спрашиваю: подскажите люди добрые в чем проблема?  smile 

Зы. А где всевидящее око? - у мну вместо юпика тока крестик...  smile 
  

Это сообщение отредактировал(а) JaguarSmith - 30.4.2006, 19:57
PM MAIL YIM   Вверх
ivashkanet
Дата 1.5.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Цитата(ivashkanet @  30.4.2006,  16:09 Найти цитируемый пост)
P.S. Слушай... оно скорее всего так:
При отправке клика на обработку ASP.NET перегружает страницу и из-за этого и начинается опять первый шаг.
Пожно проверять свойство Page.IsPostBack, либо, если шагов больше 2, то введи переменную Step в которой и считай текущий шаг  
А далше все if-ом или switch-ом   

Я ж написал возможную проблему.

Может еще быть вариант:
Как я понял, у тебя работает мастер, снимающий данные без перегрузки страницы. Так?
Этому процессу может мешать автоматичесое послание запроса при нажатии на кнопку.

Точно, только что протестил smile 
Вот только не смог отключить автоматический запрос smile  
PM MAIL WWW ICQ   Вверх
JaguarSmith
Дата 1.5.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: 1
Всего: 1



Спасибо ivashkanet!  smile 
Скорее всего как закончатся праздники просто перетащу проект на ASP.NET 2 - я в VS2005 - видел какой-то компонент для создания мастеров(заодно начну рабираться с vs2005 = ) ...

Зы. а ващето - тут похоже на конкретную недоработку мелкомягких - код то корректный а вот не работаит... 
PM MAIL YIM   Вверх
arilou
Дата 1.5.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(JaguarSmith @  1.5.2006,  19:41 Найти цитируемый пост)
 ващето - тут похоже на конкретную недоработку мелкомягких - код то корректный а вот не работаит

Никаких недоработок тут нет. Просто ты не доделал реализацию мастера. Тебе надо ввести понятие "Номер текущей страницы", и не пересоздавать кнопку "Next", а в зависимости от текущей позиции прицеплять к ней соотв.обработчик, или менять логику. И есессно проверять Page.IsPostBack - если оно False, то страница открывается первый раз, и ты свой мастер должен проинициализировать. А дальше дело техники. 

Пробуй, если что - помогу. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
ivashkanet
Дата 2.5.2006, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Цитата(arilou @  1.5.2006,  23:40 Найти цитируемый пост)
Никаких недоработок тут нет.

Хочу чуть-чуть (самую малость smile ) не согласиться.

Удобнее сделать мастер (тем более простой) который не требует перезагрузки страницы, вот только как не отправлять данные на сервер после клика.

P.S. arilou, с возвращением. Давно тебя небыло smile Кстати, mr.Дуды тоже.

P.P.S. Я это все писал выше  smile 
Цитата(arilou @  1.5.2006,  23:40 Найти цитируемый пост)
Тебе надо ввести понятие "Номер текущей страницы", и не пересоздавать кнопку "Next", а в зависимости от текущей позиции прицеплять к ней соотв.обработчик, или менять логику. И есессно проверять Page.IsPostBack - если оно False, то страница открывается первый раз, и ты свой мастер должен проинициализировать. А дальше дело техники. 

 
PM MAIL WWW ICQ   Вверх
JaguarSmith
Дата 2.5.2006, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: 1
Всего: 1



Спасибо за помошь arilou. Если реализовывать все с проверкой Page.IsPostBack  то надо кардинально переделывать весь мастер - всё дело в том, что первый шаг я "впаял" в код самой страницы и при сбросе он грузится всесте со страницей...

Я все-таки пошёл по пути неизобретения велосипеда и воспользовался компонентом wizard из vs2005 - он решил все проблемы и теперя осталось тока попросить хостера сделать мне приложение ASP.NET 2.0. 

Единственный затык с ним это как сделать чтобы при нажатии кнопки "NEXT" отменить переход к следующему шагу если значение какого-то поля неправильное(Я имею ввиду не банальный валидатор(с ними я быстренько разобрался), а что-то более серьезное что требует обработки на серверной стороне). В MSDN 2005 ответ ненашелся (ИМХО MSDN - стал совсем запутанным и непонятным - раньше по F1 выдавалось хоть что-то имеющее отношение к тому что выделено в тексе кода... А может я просто пока не разобрался с настройками = )

Зы. Ещё раз огромное спасибо ivashkanet и Exception!!! smile 
ЗЗы. Про Page.IsPostBack  запомнил на будущее! 8 ) 
PM MAIL YIM   Вверх
ivashkanet
Дата 2.5.2006, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Цитата(JaguarSmith @  2.5.2006,  01:49 Найти цитируемый пост)
Единственный затык с ним это как сделать чтобы при нажатии кнопки "NEXT" отменить переход к следующему шагу если значение какого-то поля неправильное(Я имею ввиду не банальный валидатор(с ними я быстренько разобрался), а что-то более серьезное что требует обработки на серверной стороне).

Просто отследи это, и банальным if-ом оставь на текущем шаге
И, ИМХО, у CustomValidator есть серверная проверка условия. Поищи. smile  
PM MAIL WWW ICQ   Вверх
Exception
Дата 2.5.2006, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 9
Всего: 186



Полетел мой аватарчик.. Надо восстановить. А по теме - валидаторы и на сервере проверку устраивают. 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0786 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.