Dynamisch Buttons erzeugen EventHandler



  • Hi,

    ich habe ein kleines Problem in meinem Projekt und weiß nicht genau, wie ich es angehen soll. Wäre toll wenn ihr mir unter die Arme greifen würdet.

    Ich habe ein ASP.NET Programm geschrieben, welches es SQL Select auf eine Datenbank ausführt und das Ergebnis in Tabellenform ausgibt.

    Wenn die Suchabfrage von einem Administrator ausgeführt wird, sollen zusätzlich Buttons zum verwalten des Ergebnisses angezeigt werden (löschen und ändern).

    Soweit funktioniert alles. Nur leider schaffe ich es nicht, die Buttons auf ein Event reagieren zu lassen.

    Ich habe eine Funktion, die das Ergebnis, welches als Jagged-Array zurück gegeben wird, in Tabellenform darstellt. In dieser Funktion prüfe ich ob der Benutzer ein Administrator ist und füge gegebenenfalls die Buttons zur Tabelle hinzu (Jede Zeile).

    Button ButtonChange = new Button();
    
    TableCell change = new TableCell();
    
    ButtonChange.Text = "Ändern";
    ButtonChange.ID = "change_" + i.ToString();
    ButtonChange.Font.Size = FontUnit.Point(7);
    ButtonChange.ControlStyle.CssClass = "button";
    ButtonChange.Click += new EventHandler(Btn_Click);
    
    change.Controls.Add(ButtonChange);
    tempRow.Cells.Add(delete);
    

    Leider wird hier, das Event nicht ausgelöst.

    Ich habe gelesen, das dynamische Buttons in Page_Load angelegt werden müssen.
    Wie soll ich das aber anwenden, wenn zur Laufzeit noch nicht klar ist, wie viel Reihen meine Abfrage enthält.



  • Du musst auf das EVENT reagieren wo das GRIDVIEW (falls Du das verwendest)erstellt wird.
    Schau dir mal die Events da an. Da findest Du das Richtige.

    Auslösen bei jedem ROW.



  • Mhm wie meinst du das? Ich verwende kein GridView, ich baue um das Ergebnis eine HTML Tabelle.

    Ich habe natürlich:

    void Btn_Click(object sender, EventArgs e) 
    {
       // Do some stuff.
    }
    

    Meinst du das mit reagieren?



  • Ein Gridview ist auch eine Tabelle.

    Verwende das. Ist einfacher und besser.


Anmelden zum Antworten