0

連絡先のテーブルを動的に作成するページがあります。連絡先がメールを受け取った場合は、クリックイベントで画像ボタンも作成します。ページの残りの部分にも同様の機能があり、完全に機能します。そして、私はこれを以前に問題なく使用しました:

protected void CreateContactsList(IQueryable<AA_BranschFinder.Login.vyWebKontaktpersoner> lContacts) // Creates a table in the aspx from an IQueryable List 
        {
            if (1 == 1)
            {
                htmlTblContactsContent.Rows.Clear();

                foreach (var p in lContacts)
                {
                    HtmlTableRow tr = new HtmlTableRow();
                    HtmlTableCell tdName = new HtmlTableCell();
                    HtmlTableCell tdCompanyName = new HtmlTableCell();
                    HtmlTableCell tdEmailAdress = new HtmlTableCell();
                    tdName.InnerHtml = p.strFnamn + " " + p.strEnamn;
                    tdCompanyName.InnerHtml = p.strNamn;

                    //Displays an image if the contacts has an email
                    if (p.strEpost != null)
                    {
                        ImageButton imgEmail = new ImageButton();
                        imgEmail.CommandArgument = p.intKundID.ToString();
                        imgEmail.ImageUrl = "images/symbol_letter.gif";
                        imgEmail.CssClass = "letter";
                        imgEmail.Click +=new ImageClickEventHandler(imgEmail_Click);
                        tdEmailAdress.Controls.Add(imgEmail);
                    }
                    tr.Cells.Add(tdCompanyName);
                    tr.Cells.Add(tdEmailAdress);
                    tr.Cells.Add(tdName);
                    htmlTblContactsContent.Rows.Add(tr);
                }
            }

        }

        void imgEmail_Click(object sender, ImageClickEventArgs e)
        {

ここでのブレークポイントは 、new NotImplementedException(); をスローします。}

ページは Java ポップアップ ウィンドウ内に存在します。しかし、同様のイベント作成で正常に機能するページング番号があります。しかし、それらはリンクボタンです。

4

4 に答える 4

0

ポストバックにイベントハンドラーが追加されていることを確認してください。最初のページの読み込み時に追加すると、イベントは処理されません。(この問題に遭遇し、自分で解決しました。)

于 2009-10-22T14:37:37.647 に答える
0

Create メソッドをどこで呼び出していますか? 他のイベント ハンドラーが実行される前に、理想的には Page.Init で実行する必要があります。それ以外の場合、ページにポストされたデータは、まだ存在しないコントロールに対して発生するイベントを示します。

また、必ず ImageButton に ID を付与してください。これにより、デバッグがはるかに簡単になります。

imgEmail.ID = String.Format("EmailImageButton_{0}", p.intKundID);

別の解決策は、Request オブジェクトの __eventtarget および __eventargument パラメータを見て、そこでクリックされたボタンを確認することです。

于 2009-05-25T08:09:52.743 に答える
0

私が誤解していなければ、imagebutton は送信ボタンであり、linkbutton は JavaScript の a-tag です。イメージボタンのクリックを変更する (つまり、usesubmitbehaviour を false に設定する) と、問題が解決する場合があります。

于 2009-05-25T10:47:16.733 に答える
0

すべてのポストバックで動的コントロールを作成する必要があります。imgEmail_Click イベント ハンドラのコードも確認してください。.NET IDE の Alt + Shift + F10 メソッドを使用してイベント ハンドラー メソッドを作成した場合、この行を削除していない可能性があります -

throw new Exception("The method or operation is not implemented.");
于 2009-05-25T08:51:09.773 に答える