Событие нажатия кнопки вызова asp.net, которое я создал

Я пишу веб-приложение в asp.net. У меня есть страница aspx, которая вызывает класс (тест), который создает кнопку и возвращает кнопку. Конструктор класса получает функцию, которую должно активировать событие нажатия кнопки (userClickOnButton), и вставляет ее в button.click += EventHandler("имя функции (userClickOnButton)");

проблема в том, что в коде aspx за кодом я использую IsPostBack (не могу его снять, нужно это условие), и когда я нажимаю кнопку, программа не переходит к событию, которое я создал для кнопки, но когда я снимаю IsPostBack Условие, что программа переходит к событию, которое я создал (функция userClickOnButton).

мой код: код aspx позади

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Test test = new Test(userClickOnButton);
        Button button = test.AddButton();
        cell.Controls.Add(button);
    }
}

private void userClickOnButton(object sender, EventArgs e)
{
    this.ModalPopupExtenderSelectFilds.Show();
}

мои занятия

public class Test
{

Action<object, EventArgs> m_ButtonClickActivateFunction;

public Test(Action<object, EventArgs> func) 
{
    m_ButtonClickActivateFunction = func;
}

public Button AddButton()
{
    Button button = new Button();
    button.Text = "select";
    button.ID = "buttonID";
    button.Click += new EventHandler(m_ButtonClickActivateFunction);

    return button;
}

нужна помощь, чтобы активировать событие, не удаляя условие IsPostBack

Благодарность


person user723686    schedule 20.02.2012    source источник
comment
без постбэка, как сервер об этом узнает? Однако вы можете сделать это так, как кажется, без обратной передачи с помощью Ajax.   -  person alexsuslin    schedule 20.02.2012
comment
Я могу показать вам только asp.net/ajax. Ты тот, кто должен пройти через это.   -  person alexsuslin    schedule 20.02.2012
comment
удалите if(!IsPostBack) в Page_Load   -  person Davin Tryon    schedule 20.02.2012


Ответы (1)


Я думаю, что asp.net не обрабатывает нажатия на кнопки, которых больше не существует. Поскольку при обратной передаче вы не создаете кнопку повторно, и поэтому кнопка больше не существует в коллекции элементов управления страницы, событие не обрабатывается.

Обработка события происходит после Page_Load, поэтому Page_Load должен был воссоздать кнопку.

Посмотрите также здесь: Жизненный цикл страницы Asp.Net

person Bazzz    schedule 20.02.2012