Comment passer une adresse de fonction ???

pasd Messages postés 2 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 9 avril 2005 - 8 avril 2005 à 23:52
pasd Messages postés 2 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 9 avril 2005 - 9 avril 2005 à 11:32
comment passer un un pointeur de fonction ?

Je voudrais passer un addressOf dans une fonction, quel déclaration je met
(ou un autre moyen si il y a)

en simplifiant
exemple:
Dans Webform.aspx.vb
J'ai une fonction de reception du click bouton
Private Sub BTN_Command(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)
Select Case e.CommandArgument.ToString
Case "BTN_AJOUT"
---> Traitement clic sur le bouton ajouter
Case "BTN_RECH"
---> Traitement clic sur le bouton Rechercher
End Select
End sub

Je veux remplacer dans le page_load du Webform.aspx.vb
'Asso au bouton recherche la fonction command ci-dessus
ObjBtn = New ImageButton
ObjBtn = Conteneur_MR.FindControl("BTN_RECH")
If (Not ObjBtn Is Nothing) Then AddHandler ObjBtn.Command, AddressOf BTN_Command
ObjBtn = Nothing

par call AssoCommand(Conteneur_MR, "BTN_RECH", AddressOf BTN_Command)

mais dans la fonction je sais pas quel argument déclaré pour AddressOf BTN_Command
Public Sub AssoCommand(ByVal Conteneur_MR As PlaceHolder, ByVal Id as string, ByVal AdrCmd as ????)
Dim ObjBtn as ImageButton

ObjBtn = New ImageButton
ObjBtn = Conteneur_MR.FindControl(Id$)
If (Not ObjBtn Is Nothing) Then AddHandler ObjBtn.Command, AdrCmd
ObjBtn = Nothing
End sub

Merci d'avance

2 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 avril 2005 à 02:55
Pourquoi t'appelles pas directement la procédure du click sur le bouton ? C'est vrai c'est une solution de simplicité :)



Mais sinon j'ai pas trop compris ceque tu veux faire? pourquoi tu
laisses pas le addhandler ? j'ai surtout l'impression que t'es perdu
dan les events etc :D



si ca peut t'aider, essaye de séparer des actions qui pourrait etre
utilisable ailleurs dans une fonction bien définit plutot que dans
l'event du bouton.



Si tu pouvais essayer de reformuler ce que tu veux, les buttons ils
viennent d'ou tu les créer par le code ? c'est pour ca que tu met un
commandargument ? et suivant le commandargument tu veux faire quoi ?
executer une fonction de recherche ou executer une fonction d'ajout ?
et aprés je comprend plus ce que tu veux faire


<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
pasd Messages postés 2 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 9 avril 2005
9 avril 2005 à 11:32
Bonjour et merci de m'avoir répondu

Eh je débute en asp.net !! (plus habituer au Php et Asp)

J'ai très peu de temps pour faire un site
Pour le Back office, j'ai à 80% besoin d'un moteur de recherche, d'une liste resultat et d'un formulaire en cas de création ou modification d'un enreg
Dans mon message, j'ai voulu simplifier mais voila
J'ai donc créé une classe qui contruire soit le moteur de recherche et la liste resultat soit un formulaire de modification ou d'ajout
Un No de traitement permet à la classe de determiner le quel est la requete associé, ce qui y a dans le moteur de recherche, la liste resultat et le formulaire de maj.
Ceci pour m'éviter de faire des copier coller du code dans les différentes aspx
Je lui passe un conteneur (placeHolder) et un no de traitement et si liste & recherche ou formulaire ajout ou formulaire modif.
Cette classe gère le placement des Objets de sasie, de contrôle de saisie date,tél, etc ...
Et j'ai tjs les mêmes boutons (Rechercher, initialiser) pour le moteur, Supprimer dans la liste resultat, valider et retour dans le formulaire.

Dans l'aspx qui appel cette classe, je met une fonction de reception du clic des boutons, et je souhaiterai donc grâce une fonction de la classe, passer le pointeur de la fonction pour que la classe se charge des AddHandler.

en gros
Je met un place PlaceHolder dans la page aspx

je créé une fonction
Private Sub BTN_Command(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)
Select Case e.CommandArgument.ToString
Case "BTN_AJOUT"
---> Traitement clic sur le bouton ajouter
Case "BTN_RECH"
---> Traitement clic sur le bouton Rechercher
End Select
End sub

dans le webform1.load

'10 correspond au no traitement (exemple gestion des clients)
'TypeTrait.LstResult indique que je souhaite un moteur de recherche et une liste résultat
' Conteneur_aspx : le placeHolder mis sue la page aspx
Dim T as new traitement(10, TypeTrait.LstResult,Conteneur_aspx)

....
'Et là j'indique à la classe quel est la fonction de reception du clique

T.FctBtn(adresseOf BTN_Command)
.....

T=nothing

mom problème est que je ne sais pas quoi mettre en déclaration de FctBtn(ByVal AdrFct as ???) dans la classe traitement

Merci d'avance pour ta réponse
Pascal
0
Rejoignez-nous