Внезапно динамическое созданное событие нажатия кнопки изображения не сработает. - PullRequest
0 голосов
/ 25 мая 2009

У меня есть страница, которая динамически создает таблицу контактов, если контакт получил электронное письмо, я также создаю кнопку изображения с событием щелчка. У меня есть аналогичная функция на остальной части страницы, которая работает отлично. И раньше использовал это без проблем:

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)
        {

Точка останова здесь бросить новый NotImplementedException (); }

Страница живет во всплывающем окне Java. Но у меня есть номера подкачки с похожим созданием событий, который работает нормально. Но они кнопки Link.

Ответы [ 4 ]

0 голосов
/ 22 октября 2009

Убедитесь, что обработчик событий добавлен в ваши постбэки. При добавлении его только при начальной загрузке страницы событие не будет обработано! (Просто столкнулся и решил эту проблему сам.)

0 голосов
/ 25 мая 2009

Вам нужно будет создавать динамические элементы управления при КАЖДОЙ обратной передаче. Также проверьте код в обработчике события imgEmail_Click; если вы создали метод обработчика событий, используя метод Alt + Shift + F10 .NET IDE, то есть вероятность, что вы не удалили эту строку -

throw new Exception("The method or operation is not implemented.");
0 голосов
/ 25 мая 2009

Если я не ошибаюсь, кнопка image является кнопкой отправки, а кнопка link - тегом a с javascript. Возможно, изменение вашего клика на кнопке с изображением (например, использует submitbehaviour со значением false) решит вашу проблему.

0 голосов
/ 25 мая 2009

Где вы вызываете свой метод Create? Это необходимо сделать до запуска других обработчиков событий, в идеале в Page.Init. В противном случае данные, отправленные обратно на страницу, обозначаются событием, запускающим элемент управления, который еще не существует.

Я бы также позаботился о том, чтобы вы указали свой ImageButton. Это значительно упростит отладку.

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

Альтернативное решение - просмотреть параметры __eventtarget и __eventargument в объекте Request и посмотреть, какая кнопка была нажата там.

...