C#ImageButton Click事件未被触发

时间:2011-07-20 13:24:38

标签: asp.net c#-2.0

代码优先:

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 个答案:

答案 0 :(得分:1)

这是页面生命周期问题。

您正在ImageButton阶段将PreRender添加到页面(并注册您的处理程序),该阶段在调度控件事件后发生。因此,永远不会调用您的处理程序。

尝试在Load阶段添加按钮,如果可能的话。