2009-05-25 11 views
0

Ich habe eine Seite, die dynamisch eine Tabelle von Kontakten erstellen, wenn der Kontakt eine E-Mail bekam ich auch eine Bildschaltfläche mit einem Klick-Ereignis erstellen.Ich habe eine ähnliche Funktion im Rest der Seite, die perfekt funktioniert. Und ich habe dies vor ohne Probleme:Plötzlich wird das Klick-Ereignis von imagebutton nicht ausgelöst.

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- hier throw new NotImplementedException(); }

Die Seite lebt in einem Java-Popup-Fenster. Aber ich habe Paging-Nummern mit ähnlicher Ereigniserzeugung, die gut funktioniert. Aber sie sind Linkbuttons.

Antwort

0

Wo rufen Sie Ihre Create-Methode auf? Sie müssen dies tun, bevor die anderen Event-Handler ausgeführt werden, idealerweise in Page.Init. Andernfalls werden die auf die Seite zurückgesendeten Daten als Ereignisauslösung für ein Steuerelement angezeigt, das noch nicht existiert.

Ich würde auch sicherstellen, dass Sie Ihrem ImageButton eine ID geben. Es wird das Debuggen viel einfacher machen.

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

Eine alternative Lösung ist bei den __eventtarget und __eventargument Parametern im Request-Objekt schauen und sehen, welche Taste es geklickt wurde.

0

Sie müssen die dynamischen Steuerelemente bei jedem Postback erstellen. Überprüfen Sie auch den Code im Ereignishandler imgEmail_Click; wenn Sie die Event-Handler-Methode .NET IDE Alt + Shift + F10 Methode erstellt haben, dann gibt es eine Chance, dass Sie diese Zeile nicht entfernt haben -

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

Wenn ich bin nicht misstaking das Image a einreicht Art der Knopf, während der Linkbutton ein A-Tag mit Javascript ist. Vielleicht wird das Ändern Ihres Image-Buttons (dh usesubmitbehaviour auf false gesetzt) ​​Ihr Problem lösen.

0

Stellen Sie sicher, dass der Ereignishandler zu Ihren Postbacks hinzugefügt wurde. Wenn das Ereignis nur beim ersten Laden der Seite hinzugefügt wird, wird das Ereignis nicht behandelt! (Gerade angetroffen und löste dieses Problem selbst.)

Verwandte Themen