2009-05-25 12 views
0

J'ai une page qui crée une table dynamique de contacts, si le contact a reçu un email, je crée également un bouton d'image avec un événement de clic. J'ai une fonction similaire dans le reste de la page qui fonctionne parfaitement. Et je auparavant sans aucun problème:Tout d'un coup, l'événement de clic généré par une image dynamique ne se déclenche pas.

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

Breakpoint ici throw new NotImplementedException(); }

La page vit dans une fenêtre contextuelle java. Mais j'ai des numéros de pagination avec la création d'événements similaires qui fonctionne bien. Mais ce sont des Linkbuttons.

Répondre

0

Où appelez-vous votre méthode Create? Vous devez le faire avant que les autres gestionnaires d'événements ne s'exécutent, idéalement dans le Page.Init. Dans le cas contraire, les données renvoyées sur la page sont signalées par un événement qui déclenche un contrôle qui n'existe pas encore.

Je m'assurerais également que vous donniez un ID à votre ImageButton. Cela facilitera grandement le débogage.

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

Une solution alternative consiste à examiner les paramètres de __eventtarget et __eventargument dans l'objet de demande et de voir quel bouton a été cliqué là.

0

Vous devrez créer les contrôles dynamiques sur CHAQUE publication. Vérifiez également le code dans le gestionnaire d'événements imgEmail_Click; si vous avez créé la méthode de gestionnaire d'événements en utilisant la méthode de .NET IDE de Alt + Maj + F10, puis il y a une chance que vous ne l'avez pas supprimé cette ligne -

throw new Exception("The method or operation is not implemented."); 
0

Si je ne suis pas misstaking le ImageButton est un soumettre genre du bouton alors que le linkbutton est un a-tag avec javascript. Peut-être que changer votre clic sur l'image (c'est-à-dire utiliser le comportement mis à false) résoudra votre problème.

0

Assurez-vous que le gestionnaire d'événements est ajouté à vos publications. En l'ajoutant juste au chargement initial de la page, l'événement ne sera pas géré! (Juste rencontré et résolu moi-même ce problème.)