c# - creare - .net declare event



asp.net pulsante dinamico con gestore di eventi (1)

Ho qui un piccolo problema con un pulsante generato dinamicamente e il loro gestore di eventi in asp.net. Genero una tabella flessibile con pulsanti aggiuntivi per utenti speciali. I pulsanti genereranno dinamicamente, il che funziona bene. Ma non riesco a far funzionare il gestore di eventi.

Ecco alcuni pezzi del mio codice: Costruisci il pulsante (in una propria funzione).


Button ButtonChange = new Button();

ButtonChange.Text = "Change";
ButtonChange.ID = "change_" + i.ToString();
ButtonChange.Font.Size = FontUnit.Point(7);
ButtonChange.ControlStyle.CssClass = "button";
ButtonChange.Click += new EventHandler(test);

E

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

Il mio Page_Load è vuoto.

Ma il programma non salterà a testare, se clicco sul pulsante. Cosa c'è che non va?

Modificare!!! Il problema è che non so all'inizio quanti file ottengo dalla mia query sql. Per ogni riga aggiungerò un pulsante di cancellazione e un pulsante di modifica. Nel mio programma chiamo un metodo che costruisce il risultato come una tabella. Con questo metodo, controllo se l'utente corrente è un AdminUser e se lo è, chiamerò la funzione buildAdminButtons. Qui, creo i pulsanti in una nuova colonna, per ogni riga. Come posso ottenere questo in OnLoad?

private void buildAdminButtons(TableRow tempRow, int i)
{
    Button ButtonDelete = new Button();
    Button ButtonChange = new Button();

    TableCell change = new TableCell();
    TableCell delete = new TableCell();

    ButtonChange.Text = "Change";
    ButtonChange.ID = "change_" + i.ToString();
    ButtonChange.Font.Size = FontUnit.Point(7);
    ButtonChange.ControlStyle.CssClass = "button";


    ButtonDelete.Text = "Delete";
    ButtonDelete.ID = "delete_" + i.ToString();
    ButtonDelete.Font.Size = FontUnit.Point(7);
    ButtonDelete.ControlStyle.CssClass = "button";

    change.Controls.Add(ButtonChange);
    delete.Controls.Add(ButtonDelete);

    tempRow.Cells.Add(change);
    tempRow.Cells.Add(delete);
}

Ad ogni pulsante aggiungo un ID univoco, che non conosco all'inizio. Come potrei gestirlo?


Devi inserire quel codice nell'evento page_load o page_init .

protected void Page_Load()
{
  Button ButtonChange = new Button();

  ButtonChange.Text = "Change";
  ButtonChange.ID = "change_" + i.ToString();
  ButtonChange.Font.Size = FontUnit.Point(7);
  ButtonChange.ControlStyle.CssClass = "button";
  ButtonChange.Click += new EventHandler(test);
}

Leggi l'articolo MSDN - Procedura: aggiungere controlli a una pagina Web ASP.NET a livello di programmazione?





event-handling