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

Поиск:

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


Опытный
**


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

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



В обработчике нажатия на кнопку Button1 создаю кнопку Button2 и присваиваю ей
обработчик на нажатие(Button2Click). Но по нажатию на эту кнопку(Button2) обработчик не отрабатывает и сама кнопка пропадает.

Код

void Button1Click(object sender, EventArgs e)
{
        Button Button2=new Button();
        Button2.ID = "_b2";
        Button2.Text = "Button2";
        Button2.Click += new EventHandler(Button2Click);
        this.Controls.Add(Button2);
}
void Button2Click(object sender, EventArgs e)
{
        //не работает
}


Это сообщение отредактировал(а) anabiosys - 17.12.2007, 10:05
PM MAIL   Вверх
tol05
Дата 17.12.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



создавать динамический контрол нужно только в Page_Load() или раньше. Это много раз обсуждалось, поищи на форуме.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
anabiosys
Дата 17.12.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Но как я узнаю в Page_Load нажималась ли первая кнопка или нет?
PM MAIL   Вверх
Mymik
Дата 17.12.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



anabiosys, ставь флажки: записуй в HiddenField, Session, Cookie, добавляй get параметры... smile вобщем любой нужный тебе способ.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
tol05
Дата 17.12.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Можно при постбеке просматривать Request.Form.AllKeys и если там будет ключ Button1, то она и вызвала возврат формы.
Пример
Код

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        <asp:Button ID="Button2" runat="server" OnClick="Button1_Click" Text="Button" />
        <asp:Button ID="Button3" runat="server" OnClick="Button1_Click" Text="Button" />
    </div>
    </form>
</body>
</html>

Нажимаем разные кнопки, в Page_Load ставим брейкпоинт и смотрим ключи.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
anabiosys
Дата 17.12.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, попробую. Просто думал в .Net должно быть как-то покультурнее.

Это сообщение отредактировал(а) anabiosys - 17.12.2007, 13:03
PM MAIL   Вверх
tol05
Дата 17.12.2007, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



да нет, все через request и hidden-поля работает. Вот для Page код.
Код

private void RaisePostBackEvent(NameValueCollection postData)
{
    if (this._registeredControlThatRequireRaiseEvent != null)
    {
        this.RaisePostBackEvent(this._registeredControlThatRequireRaiseEvent, null);
    }
    else
    {
        string str = postData["__EVENTTARGET"];
        bool flag = !string.IsNullOrEmpty(str);
        if (flag || (this.AutoPostBackControl != null))
        {
            Control control = null;
            if (flag)
            {
                control = this.FindControl(str);
            }
            if ((control != null) && (control.PostBackEventHandler != null))
            {
                string eventArgument = postData["__EVENTARGUMENT"];
                this.RaisePostBackEvent(control.PostBackEventHandler, eventArgument);
            }
        }
        else
        {
            this.Validate();
        }
    }
}

честно говоря, нет времени разбираться, но и так видно, что через ключи request-а работа идет...


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

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

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

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


 




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


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

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