1

このメソッドは、webForm にない cs クラスにあります。いくつかの div とクラスを作成しますが、メソッドを作成したい amethod は、webform にある( objImage.Attributes.Add("OnClientClick", "amethod(objRssItem)"); )別の .cs にあります。画像ボタンをクリックすると、この方法を使用できません。どうすればできますか?ありがとう

public HtmlGenericControl CreateDIV_OyVerme_Sub_Yildiz(string id, int subId, Rss.Items objRssItem)
    {
        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.Src = strImgSrc_yildiz;
        //objImage.Click += new ImageClickEventHandler(WebForm4.ImageButtons_Click);


        objImage.ID = strControlName_ImageYildiz + id +"_" + subId;;
        objImage.ImageUrl = strImgSrc_yildiz;
        objImage.OnClientClick = strOnClientClickFunc_yildiz;
        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", "amethod(objRssItem)");
        objDiv.Controls.Add(objImage);

        return objDiv;
    }
4

1 に答える 1

0

OnClientClick は JavaScript 用です。cs メソッドを呼び出そうとしていると思います。cs メソッドを呼び出したい場合は、明確にする必要があります。ボタンにはコード ビハインドのクリック機能を使用します。問題がこれが動的オブジェクトである場合(表示されているように)、これを試してください

  objImage.Click += myfunctiontocall;

これはポストバックで発生することに注意してください。(同じクリック ハンドラーを使用して) オブジェクトを再作成しないと、関数の呼び出しが機能しません。毎回「再配線」する必要があります。


イベントにパラメーターを与えるには、そのようにクロージャーをラップできます。

  var duck = objRssItem;

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

閉鎖はトリッキーなビジネスであることを忘れないでください。グローバルになったものに対してメソッドを呼び出しているのです。奇妙なことが起こる可能性があります。

于 2012-03-19T17:26:42.583 に答える