ASP.NET ImageButton Click事件

时间:2018-05-27 14:44:57

标签: c# asp.net imagebutton

我有一个动态的ImageButton,我希望它在点击时触发一个方法。我有以下代码,不幸的是它没有用。

ImageButton imb = new ImageButton();
imb.Attributes.Add("runat", "server");
        imb.Click += new ImageClickEventHandler(ImageButton1_Click);
        imb.ID = "ID";
        imb.ImageUrl = "link to image";
Panel1.Controls.Add(imb);

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
    //it should go here
}

2 个答案:

答案 0 :(得分:0)

您必须将ImageButton添加到合适的continer中。

例如:

 form1.Controls.Add(Imb);
 /// form1 must have runat=server

您可以在here找到有用的提示。

答案 1 :(得分:0)

向页面添加动态控件是一件棘手的事情。不幸的是,您不能只声明WebControl派生类型的对象并期望它能够工作。

在ASP.NET WebForms中,有一个名为Page Lifecycle的概念。这是一个广泛的问题,但我的观点是,您必须遵守将动态控件插入页面的特定顺序。下面是一个实际的例子。

从班级的动态控制声明开始。

protected ImageButton imb = null;

然后在页面初始化期间初始化它。一种可能性是处理PreInit事件。

protected void Page_PreInit(object sender, EventArgs e)
{
    imb = new ImageButton()
    {
        ID = "ID",
        ImageUrl = "link to image"
    };

    imb.Click += Imb_Click;

    Panel1.Controls.Add(imb);

}

private void Imb_Click(object sender, ImageClickEventArgs e)
{
    // Do your stuff
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // Set initial properties as appropriate. E.g.
        imb.AlternateText = "...";
    }
}

你很高兴。