web-dev-qa-db-fra.com

asp.net: comment utiliser eventargs pour passer des paramètres sur le bouton onclick?

j'ai vu du code dans lequel les gens passent des paramètres via la propriété commandParameter de web control.then à quoi sert eventargs.

22
Maddy.Shik

Cela peut être utile si vous avez la même méthode EventHandler pour différents boutons. Exemple, supposons que votre balisage ressemble à ceci:

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

Vous pouvez avoir le même gestionnaire d'événements pour les deux boutons et les différencier en fonction du 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;
           }
}

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

52
Jose Basilio

Divers contrôles de type Button dans .NET ont un événement OnCommand ainsi qu'un événement OnClick. Lorsque vous utilisez l'événement OnCommand, vous disposez de paramètres supplémentaires que vous pouvez appliquer au bouton, tels que CommandName et CommandArgument. Ceux-ci sont ensuite accessibles dans le CommandEventArgs.

Il est utile dans les endroits où vous souhaitez affecter la même méthode à plusieurs boutons et utiliser les paramètres CommandName et CommandArgument pour indiquer quelle fonctionnalité en cliquant sur ce bouton produira.

6
Robin Day

La classe EventArgs est une classe de base. D'autres méthodes Web utilisent d'autres arguments d'événement.

par exemple. un LinkButton a un événement OnClick avec un paramètre EventArgs par défaut, mais il a également un événement OnCommand qui prend un CommandEventArgs : EventArgs paramètre qui contient des informations supplémentaires (à savoir CommandName & CommandArgument).

La classe de base d'arguments d'événement est juste là comme un espace réservé de sorte que tous les EventHandlers se conforment à une signature similaire.

5
Eoin Campbell