comment passer argument de la commande tout en appelant bouton link onclick fonction dynamiquement? (c#)
J'ai une fonction pour laquelle je partage un groupe de boutons de lien avec.
la signature de la fonction, c'est comme:
protected void FunctionName(object sender, EventArgs e)
{
...
}
Maintenant, j'ai environ 4-5 boutons de lien qui, j'en suis à l'aide d'appeler la même fonction mais juste un filtrage du stuff via l'argument de la commande comme:
<asp:LinkButton ID="lbAll" runat="server" Text="All"
CommandArgument="all" OnClick="FunctionName"></asp:LinkButton>
<asp:LinkButton ID="lbTop" runat="server" Text="Top"
CommandArgument="top" OnClick="FunctionName"></asp:LinkButton>
(...)
Maintenant, j'ai une liste déroulante qui doit faire la même chose en substance (sur les deux valeurs sélectionnées), j'ai juste besoin d'appeler cette fonction, et de transmettre le "tous" ou "top" comme argument de la Fonction: "Nomfonction"
c'est en C#
J'ai essayé d'appeler cette fonction comme
FunctionName(this, New EventArgs());
mais je ne sais pas comment passer de l'Argument?
Toutes les idées sur ce point?
Merci!
OriginalL'auteur iamserious | 2010-07-07
Vous devez vous connecter pour publier un commentaire.
Passer le LinkButton avec le bon
CommandArgument
au lieu de la ce:Mais vous devriez vraiment utiliser le
OnCommand
de l'événement au lieu deOnClick
.OnCommand
aCommandEventArgs
comme deuxième paramètre. De sorte que vous pouvez les obtenir avece.CommandArgument
dans la méthode. Et l'appel à la méthode largeur:Je viens de voir la modification de la partie.. Oui je pense que c'est une bonne Idée, parce que cela rend le code dans l'avenir, si je venais à le renommer ou supprimer le lien d'origine des boutons alors je vais devoir refaire une grande partie de mon code.. CommandName et de l'Argument qui semble parfait. Merci, vais essayer cela dès maintenant!
Je suis heureux, je pouvais l'aider ... bonne chance pour l'avenir 🙂
OriginalL'auteur Hinek
De montage pour plus de clarté
Votre gestionnaire d'événement pour l'événement click aura deux paramètres, un expéditeur et un événement args objet. L'expéditeur est l'objet qui a déclenché l'événement (le linkbutton). Dans ce gestionnaire d'événements, vous pouvez lancer l'expéditeur pour le bon type d'objet et d'accéder à ses propriétés.
Utilisant cette méthode, vous n'avez pas besoin de transmettre explicitement votre argument, vous venez de le récupérer à partir de l'expéditeur.
Alternativement (et probablement mieux), vous pouvez utiliser le bouton "OnComand" gestionnaire d'événement. La recherche de la propriété que vous utilisez déjà au http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.commandargument.aspx vous verrez que ce gestionnaire d'événement reçoit un CommandEventArgs paramètre qui a une propriété qui expose la CommandParameter objet. par exemple:
(à partir de cette page MSDN).
désolé, j'aurais dû être plus clair. Répondre maintenant totalement ré-écrit pour faire plus de sens (et de donner plus de détails d'un retard de pensée que j'ai eu qui est probablement la meilleure façon de le faire). Devrait vous donner un peu de nourriture pour la pensée, de toute façon.
Bien que je viens de réaliser que je ne pourrais pas répondre à la question ici... 🙁
Désolé chris, je pense que vous avez mal compris la question, je peux accéder aux arguments de la commande à l'intérieur de cette fonction d'accord, c'était de savoir comment passer cet argument de manière dynamique était mon problème, Hinek ci-dessous suggéré un simple mais excellente façon de le faire!
Ouais, j'ai mal compris la question, tellement que j'ai répondu à nouveau. cette réponse n'était même pas la peine d'édition pour être mieux. 😉 Et althoguh vous avez à travailler, je serais intéressé de savoir si refactoring pour le rendre plus facile à composer est une bonne option. 🙂
OriginalL'auteur Chris
OK. Je pense que j'ai manqué mon point de vue sur la dernière réponse ayant réalisé ses une question d'appeler le gestionnaire d'événement à partir de quelque part dans le code, ce n'est pas un événement...
Ce que je suggère, c'est que vous refactoriser le code de votre gestionnaire d'événement pour sortir de la fonctionnalité et de le mettre dans une méthode distincte ou deux. par exemple en pseudo-code:
Cela devrait le rendre vraiment facile ensuite de simplement appeler le peu de code que vous avez besoin. Althoguh je ne suis pas sûr que je soupçonne son considéré comme une mauvaise pratique à l'appel d'un gestionnaire d'événement juste parce que vous avez besoin de certaines de ses fonctionnalités. C'est certainement à la recherche comme un plus de travail que nécessaire. 🙂
Vous pouvez bien sûr plutôt une méthode qui prend un paramètre, puis traite de manière appropriée (dans les faits, l'affacturage tout dans Nomfonction).
Je pense que cela répond à votre question mieux. Si non, je vais juste rentrer à la maison. 😉
Cool. Eh bien, je suis content que ma réponse n'était pas aussi stupide que la première. Et heureux, bien sûr, que quelqu'un d'autre vous a donné la réponse que vous après. 😉
OriginalL'auteur Chris