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

属性を追加する必要はありません: 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 に答える
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 に答える