2012-12-13 9 views
7

Ho tre pulsanti per chiamare lo btn_Clicked sull'evento onClick. Nel codice sottostante voglio ottenere l'ID del pulsante che ha causato il postback. So che posso assegnare ciascun pulsante per chiamare un metodo diverso, ma mi piacerebbe imparare un po 'di ASP.Net. Dimmi anche quale metodo è più efficiente? Chiamando diversi metodi su diversi clic sui pulsanti o chiamando lo stesso metodo (se la funzionalità di ciascun pulsante è la stessa).Come individuare il pulsante su cui è stato fatto clic nel codice?

+1

utilizzare l'oggetto mittente, in caso handler. – ryadavilli

+0

Impara mvc invece – Jeroen

risposta

20

Lanciare l'oggetto mittente sul pulsante e quindi è possibile ottenere tutte le proprietà.

Button clickedButton = (Button)sender; 

mi dicono anche qual è il metodo più efficiente? Chiamando diversi metodi su diversi clic del pulsante o chiamando lo stesso metodo (se la funzionalità di ciascun pulsante è la stessa).

Se la funzionalità è la stessa, è meglio avere un singolo evento, poiché non è necessario replicare il codice. Ricorda lo DRY principle.

consideri il seguente esempio:.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Button clickedButton = sender as Button; 

    if (clickedButton == null) // just to be on the safe side 
     return; 

    if (clickedButton.ID == "Button1") 
    { 
    } 
    else if(clickedButton.ID == "Button2") 
    { 
    } 
} 
3

Verificare se l'argomento sender del vostro metodo di callback è lo stesso riferimento del pulsante siete interessati a

Button button1; 
Button button2; 

void OnClick(object sender, RoutedEventArgs args) 
{ 
    Button button = sender as Button; 
    if (button == button1) 
    { 
     ... 
    } 
    if (button == button2) 
    { 
     ... 
    } 
} 
+0

Mi viene in mente un po 'di sorpresa. Pensavo che == avrebbe usato 'Object.equals', che testerebbe se sono lo stesso riferimento. Quale parte di ciò è errata? – ceyko

+0

Probabilmente è la cosa migliore da fare comunque (e probabilmente necessario), quindi il mio edit :) – ceyko

+0

Direi se è una buona pratica o no, cosa succede se vuoi accedere al ButtonID, o qualche altra informazione relativa alle sue proprietà . Devi lanciare l'oggetto sul pulsante, come lo stai facendo ora – Habib

Problemi correlati