CommandEventArgs и вопрос о событии - PullRequest
4 голосов
/ 15 июня 2011

Я сгенерировал несколько кнопок и прикрепил к ним обработчик событий, например:

Button pgs = new Button();//Create New Topic
pgs.Width = 20;
pgs.Command += obtainTopicsPerPage_Click;
pgs.CommandName = tPage.ToString();
pgs.Text = tPage.ToString();
btns.Add(tPage.ToString());
buttons.Add(pgs);
}

void obtainTopicsPerPage_Click(Object sender, CommandEventArgs e)
{
    foreach (var item in tPages)
    {
        if (item.Key == e.CommandName)
        {
            foreach (var posts in item.Value)
            {
                posts.ExecuteAll();
             }
        }
    }
    MyButtonTable();
}

Теперь обработчик событий никогда не срабатывает, когда я нажимаю на кнопку. я проверяю с помощью отладчика ,, и когда я нажимаю кнопку, появляется только обратная передача ,, но она не достигает внутри функции обработчика событий

Обновление:

    void Page_PreInit(object sender, EventArgs e)
{
    List<Button> btn=(List<Button>)ViewState["Buttons"];
    foreach (var item in btn)
    {
            item.Width = 20;
            item.Command += obtainTopicsPerPage_Click; //resigning the eventhandlers from the begining
             item.CommandName = tPage.ToString();
             item.Text = tPage.ToString();
    }
}

1 Ответ

3 голосов
/ 15 июня 2011

Это часто имеет место при динамическом создании кнопок. Когда страница отправляется обратно, на странице больше нет кнопок, и поэтому они не могут привязать их к обработчикам событий.

Самое простое решение - убедиться, что вы заново генерируете все кнопки в Page_Init при каждой загрузке страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...