0

我试图调用点击事件,但它没有调用它我试过这个代码:比如

objImage.Click += new ImageClickEventHandler(WebForm4.ImageButtons_Click);
objImage.Click += WebForm4.ImageButtons_Click; 

我的代码:

public HtmlGenericControl CreateDIV_OyVerme_Sub_Yildiz(string id, int subId)
{
    HtmlGenericControl objDiv = new HtmlGenericControl("div");
    objDiv.ID = strControlName_DivYildiz + id + "_" + subId;

    objDiv.Attributes.Add("class", strClassName_DivYildiz);
    //objDiv.Attributes.Add("runat", "server");

    ImageButton objImage = new ImageButton();
    objImage.Attributes.Add("runat", "server");
    objImage.CommandArgument = id; 
    //objImage.Src = strImgSrc_yildiz;
  objImage.Click += new ImageClickEventHandler(WebForm4.ImageButtons_Click);
   //objImage.Click += WebForm4.ImageButtons_Click; 
    objImage.Attributes.Add("onclick", "WebForm4.ImageButtons_Click();");

    objImage.ID = strControlName_ImageYildiz + id +"_" + subId;
    objImage.ImageUrl = strImgSrc_yildiz;
   objImage.OnClientClick = strOnClientClickFunc_yildiz;
   // objImage.Attributes.Add("OnClick","WebForm4.amethod (o;"); 
    objImage.Style.Add(HtmlTextWriterStyle.Height, "19px");
    objImage.Style.Add(HtmlTextWriterStyle.Width, "20px");
    objImage.Style.Add(HtmlTextWriterStyle.BorderWidth, "0px");
    objImage.Style.Add(HtmlTextWriterStyle.Position, "relative");
    objImage.Style.Add(HtmlTextWriterStyle.Top, "13px");
    objImage.Style.Add(HtmlTextWriterStyle.Left, "6px");
    objImage.Style.Add("float", "left");
    objImage.ToolTip = subId + "/" + 5;
    // calling the method 
   // objImage.Attributes.Add("OnClientClick", "return(GetRssID(objRssItem));");

  //  var duck = objRssItem;

  //  objImage.Click += (s, e) => { WebForm4.amethod(objRssItem); };
   //objImage.Click += WebForm4.amethod (objRssItem); 

    objDiv.Controls.Add(objImage);

    return objDiv;
}
4

2 回答 2

0

注册事件处理程序没有问题 - 以下任何一行都将注册事件处理程序:

objImage.Click += new ImageClickEventHandler(WebForm4.ImageButtons_Click);
objImage.Click += WebForm4.ImageButtons_Click; 

它是一个动态生成的图像按钮,因此要使事件处理程序起作用,您需要确保

  1. 必须重新创建图像按钮并将其添加到后续回发时的控制层次结构。如果回发时控制不存在,则它不能引发事件。
  2. 您必须确保控件在回发时具有相同的 ID。不仅它必须在相同的控制层次结构中,而且它的父级也需要具有相同的 id。要点是控件使用其 ID 定位。
  3. 控件(图像按钮)必须尽早添加到页面的控件层次结构中 -Page_Init将是最好的,但如果这不可能,那么 page_load 可能会起作用。在任何后续事件中创建控件都不会触发回发事件。
于 2012-03-22T11:24:49.633 回答
0

您不需要添加属性:onclick。删除这一行: objImage.Attributes.Add("onclick", "WebForm4.ImageButtons_Click();");
你可以简单地这样做:

    ImageButton img = new ImageButton();
        img.Click+=new ImageClickEventHandler(img_Click);
        img.ID = "img";
        img.Attributes.Add("runat","server");

        form1.Controls.Add(img);
于 2012-03-22T11:10:20.460 回答