asp.net вызывая событие нажатия кнопки, которое я создал - PullRequest
0 голосов
/ 20 февраля 2012

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

проблема заключается в том, что вaspx за кодом я использую IsPostBack (не могу снять его, нужно это условие), и когда я нажимаю на кнопку, progrem не переходит к событию, которое я создал для кнопки, но когда я снимаю условие 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

спасибо

1 Ответ

1 голос
/ 20 февраля 2012

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

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

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

...