2009-05-06 3 views
21

ho visto un codice in cui le persone passano i parametri attraverso la proprietà commandParameter del controllo web. Quindi l'uso di eventargs.asp.net: come utilizzare gli eventarg per il passaggio dei parametri sul pulsante onclick?

+0

Possibile duplicato di [Qualcuno può spiegarmi nei termini più generici come utilizzare EventArgs?] (Http://stackoverflow.com/questions/1778952/can-someone-please-explain-to-me-in -the-most-layman-terms-how-to-use-eventargs) – Toadfish

risposta

50

Questo può essere utile se si dispone dello stesso metodo EventHandler per pulsanti diversi. Esempio, dire la vostra markup assomiglia a questo:

<asp:Button ID="button1" runat="server" CommandArgument="MyVal1" 
    CommandName="ThisBtnClick" OnClick="MyBtnHandler" /> 
<asp:Button ID="button2" runat="server" CommandArgument="MyVal2" 
    CommandName="ThatBtnClick" OnClick="MyBtnHandler" /> 

si può avere lo stesso gestore di eventi per entrambi i pulsanti e differenziare in base alla CommandName:

protected void MyBtnHandler(Object sender, EventArgs e) 
{ 
    Button btn = (Button)sender; 
      switch (btn.CommandName) 
      { 
       case "ThisBtnClick": 
        DoWhatever(btn.CommandArgument.ToString()); 
        break; 
       case "ThatBtnClick": 
        DoSomethingElse(btn.CommandArgument.ToString()); 
        break; 
      } 
} 

Fonte:aspnet-passing-parameters-in-button-click-handler

+0

collegamento non funziona più – madman2890

+0

Immagino di non capire perché una chiamata di funzione normale non funzionerebbe. Posso chiamare una funzione con discussioni vuote, posso chiamare una funzione e passare una variabile ad essa, ma non posso dire "miafunzione (\" opzione1 \ ")" – JFA

5

I vari controlli di tipo Button in .NET hanno un evento OnCommand e un evento OnClick. Quando si utilizza l'evento OnCommand, sono disponibili parametri aggiuntivi che possono essere applicati al pulsante, ad esempio CommandName e CommandArgument. Questi possono quindi essere accessibili nel CommandEventArgs.

È utile nei luoghi in cui si desidera assegnare lo stesso metodo a più pulsanti e utilizzare i parametri CommandName e CommandArgument per indicare quale funzionalità farà clic su quel pulsante.

5

Il La classe EventArgs è una classe base. Altri metodi Web utilizzano altri argomenti Event.

ad es. un LinkButton ha un evento OnClick con un parametro EventArgs predefinito, ma ha anche un evento OnCommand che accetta un parametro CommandEventArgs : EventArgs che ha alcune informazioni aggiuntive (ovvero CommandName & CommandArgument).

La classe di base di evento args è proprio lì come un segnaposto in modo che tutti gli EventHandler siano conformi a una firma simile.