C # Как я могу вызвать событие нажатия кнопки изображения в HTML общего управления? - PullRequest
0 голосов
/ 22 марта 2012

Я пытался вызвать событие клика, но оно не вызывало его. Я попробовал следующие коды: например

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;
}

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Нет проблем в регистрации обработчика событий - любая из следующих строк будет регистрировать обработчик событий:

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

Это динамически генерируемая кнопка изображения, поэтому для работы обработчика событий необходимо убедиться, чточто

  1. Кнопка изображения должна быть воссоздана и добавлена ​​в иерархию управления на последующем постбэк.Если элемент управления отсутствует на обратной передаче, он не может вызвать событие.
  2. Необходимо убедиться, что элемент управления имеет такой же идентификатор на обратной передаче.Мало того, что он должен быть в той же иерархии управления и его родители также должны иметь одинаковые идентификаторы.Важным моментом является то, что элемент управления находится с использованием его идентификатора.
  3. Элемент управления (кнопка изображения) должен быть добавлен в иерархию элементов управления страницы как можно раньше - лучше всего будет Page_Init, но если это невозможно, тогдаpage_load может работать.Создание элемента управления в любом последующем событии не вызовет событие обратной передачи.
0 голосов
/ 22 марта 2012

Вам не нужно добавлять атрибут: 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);
...