动态图片按钮的点击事件未被触发

5

动态ImageButton的点击事件无法触发,请帮忙解决。我在ASP.NET的OnInit方法中创建了动态按钮。

protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
 ImageButton img = new ImageButton();
        img.ID = "first_button";
        img.Click += new ImageClickEventHandler(first_Click);
        img.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "ClassLibrary1.image.first.gif");
        img.Attributes.Add("onmouseover", "onmousehand(this,'over')");
        img.Attributes.Add("onmouseout", "onmousehand(this,'out')");
        p1.Controls.Add(img);
        img.Dispose();
        img = new ImageButton();
        img.ID = "previous_button";
        img.Click += new ImageClickEventHandler(previous_Click);
        img.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "ClassLibrary1.image.previous.gif");
        img.Attributes.Add("onmouseover", "onmousehand(this,'over')");
        img.Attributes.Add("onmouseout", "onmousehand(this,'out')");
        p1.Controls.Add(img);
        img.Dispose();

        t1.Attributes.Add("style", "color:#666666;");
        // t1.Text = "Page " + current_page + " of " + total_pages;
        t1.ID = "text_box1";
        t1.Attributes.Add("onclick", "textbox_enable('" + t1.ClientID + "')");
        p1.Controls.Add(t1);
        img = new ImageButton();
        img.ID = "go_button";
        img.Click += new ImageClickEventHandler(go_Click);
        img.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "ClassLibrary1.image.go.GIF");
        img.Attributes.Add("onmouseover", "onmousehand(this,'over')");
        img.Attributes.Add("onmouseout", "onmousehand(this,'out')");
        p1.Controls.Add(img);
        img.Dispose();
        ImageButton img1 = new ImageButton();
        img1.ID = "next_button";
        img1.CommandName = "next_button";
        img1.CommandArgument = "next1";

        img1.Click += new ImageClickEventHandler(next_Click);
        img1.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "ClassLibrary1.image.next.gif");
        img1.Attributes.Add("onmouseover", "onmousehand(this,'over')");
        img1.Attributes.Add("onmouseout", "onmousehand(this,'out')");
        p1.Controls.Add(img1);
        //img.Dispose();
        img = new ImageButton();
        img.ID = "last_button";
        img.Click += new ImageClickEventHandler(last_Click);
        img.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "ClassLibrary1.image.last.gif");
        img.Attributes.Add("onmouseover", "onmousehand(this,'over')");
        img.Attributes.Add("onmouseout", "onmousehand(this,'out')");
        p1.Controls.Add(img);
        img.Dispose();    
   }
   private   void next_Click(object sender, ImageClickEventArgs e)
    {

        ImageButton next = (ImageButton)sender;
        string value = next.CommandArgument;
        current_page++;
        t1.Text = "Page " + current_page + "of" + total_pages;
    }
  protected override void Render(HtmlTextWriter writer)
    {

        t1.Text = "Page " + current_page + " of " + total_pages; 
        p1.RenderControl(writer);
        base.Render(writer);
    }
2个回答

1

试试这个

protected void Page_Load(object sender, EventArgs e)
{
    ImageButton img = new ImageButton();
    img.ID = "SampleImage";
    img.Click += new ImageClickEventHandler(img_Click);
    this.form1.Controls.Add(img);
}

void img_Click(object sender, ImageClickEventArgs e)
{
    Response.Write("Hello World");
}

它对我来说是有效的 :) 它应该正常工作。你为什么要销毁ImageButton呢? - Anuraj
但它不会进入所调用的点击方法,为什么会这样呢?代码有问题吗?在default.aspx页面中应该提供哪个页面编号? - juhi
抱歉,我不明白你的意思 :) - Anuraj

0

您可以在 Page_Init 中定义动态按钮的功能,而不是在 Oninit 中。

    protected void Page_Init(object sender, EventArgs e)
{
    ImageButton imagebutton = new ImageButton();
    imagebutton.ID = "myID";
    imagebutton.Attributes.Add("runat", "server");
    imagebutton.Click += new ImageClickEventHandler(image_Click);
    this.form1.Controls.Add(imagebutton);
}

void image_Click(object sender, ImageClickEventArgs e)
{
    //Your code here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接