C # ImageButton Click событие не запущено - PullRequest
1 голос
/ 20 июля 2011

Код первый:

public class ExtendedGridView : GridView
{
    private ImageButton m_btnPrint;
    public ImageButton PrintButton
    {
        get { return m_btnPrint; }
        set { m_btnPrint = value; }
    }

    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        PrintButton = new ImageButton();
        PrintButton.Click += new ImageClickEventHandler(OnPrintButtonClick);
        PrintButton.AlternateText = "Print";
        PrintButton.ImageUrl = "../../Images/Print.png";

        TableCell cell = new TableCell();
        cell.Controls.Add(PrintButton);
        cell.ColumnSpan = this.FooterRow.Cells.Count;

        this.FooterRow.Cells.Clear();
        this.FooterRow.Cells.Add(cell);
    }

    public void OnPrintButtonClick(object sender, ImageClickEventArgs e)
    {
        // Do Stuff
    }
}

Этот бит кода предназначен для замены содержимого нижнего колонтитула на кнопку с изображением, и это прекрасно работает. План состоит в том, чтобы обработать событие click в том же классе, но я не могу заставить метод OnPrintButtonClick идти, он просто не сломается. Страница, однако, похоже, делает пост обратно. Ранее на этом сайте были вопросы по этому вопросу, но я пока не видел ответа. Заранее спасибо

1 Ответ

1 голос
/ 20 июля 2011

Это проблема жизненного цикла страницы.

Вы добавляете ImageButton на страницу (и регистрируете свой обработчик) во время фазы PreRender, которая происходит после отправки управляющих событий. Следовательно, ваш обработчик никогда не будет вызван.

Попробуйте добавить кнопку во время фазы Load, если это возможно.

...