Appel de fonctions entre deux userControls

fomson91 Messages postés 5 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 26 décembre 2006 - 21 déc. 2006 à 11:33
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 26 déc. 2006 à 12:23
Bonjour. J'ai un problème qui me persiste depuis 2 jour maintenant.
J'ai une page aspx qui contient 2 usercontrols qu'on va appeler uc1 (de type user_control1) et uc2 (de type user_control2).
uc1 a une fonction qu'on va appeler fonction1 et uc2 a une fonction fonction2

Dans uc1 j'aimerai faire appel à fonction2 de uc2. Et dans uc2 j'aimerai faire appel à fonction 1 de uc1.
Pour cela j'ecris:

Dans uc1:  ((user_control2)this.Parent.FindControl("uc2")).fonction2(...)
Dans uc2:  ((user_control1)this.Parent.FindControl("uc1")).fonction1(...)

Mais il me fait cette erreur à la compilation:
"Erreur 1 Le type ou le nom d'espace de noms 'user_control2' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) "
Cette erreur est bizarre car les deux user control sont déclarés "public partial class...." donc devraient etre visible dans tout le projet non?
J'ai voulu contourner le problème en créant un namespace mais ca ne lui plait pas non plus.

Merci de m'aider car ca commence à devenir urgent.

10 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
21 déc. 2006 à 11:35
Est ce que les deux user controls appartiennent au même namespace?
0
fomson91 Messages postés 5 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 26 décembre 2006
21 déc. 2006 à 11:51
En fait je suis débutant et programme en ASP.NET 2.0 et je n'ai utilisé pratiquement aucun namespace dans le projet (certaines classes du fichier App_code en ont un mais les userControls et les Webform n'en ont pas)
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
21 déc. 2006 à 11:57
Déplacé sur aspfr.com !
















<hr size="2" />



-Blog-
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
21 déc. 2006 à 21:07
Bonsoir,

en fait en ASP.net par défaut toutes les pages sont compilé dans une assembly (une page = une assembly), pour t'amuser avec le type il faut passer par le namespace ASP.tonUC_ASCX, mais je ne te conseille pas cette solution le mieux est de faire une interface que tu implémentes dans ta page et tu peux ainsi caster la page en ton interface (qui sera accessible de partout)... Mais il est rarement utile d'avoir a appellé une méthode d'une autre page car seulement une instance de la page est accessible à la fois donc tu seras obligé d'acceder à une méthode static, et dans la plupart des cas cette méthode static n'a rien à faire dans la page mais plutot dans un helper :-)

Pour avoir le meme comportement que sous VS .net 2003 tu peux utiliser le Web Application Project qui te permettras d'avoir une assembly pour tout le site, il y a certains avantages et certains inconvenient a developper ainsi, je préfére utiliser le Web Deployment project qui mix les deux : le mode multi assembly de VS 2005 qui est très bien pour developper et le mode VS 2003 (mono assembly) pour la production (beaucoup plus performant)

<hr />Cyril - MVS - MCP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fomson91 Messages postés 5 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 26 décembre 2006
22 déc. 2006 à 14:48
Bonjour et merci pour ta réponse.
Le fait de passer par une interface est une bonne idée mais le problème c'est que la fonction que je dois appeler dans l'autre userControl est liée à un controle de celui-ci.
La fonction doit faire ceci:
Dans l'user control qui fait ch...., j'ai un gridview qui contient un template field (checkbox) et la fonction en question doit construire un ArrayList avec les identifiants des lignes du gridView qui ont été sélectionnées (toutes les lignes dont la checkbox a été cochée).
Ma première idée était de mettre l'arrayList dans une variable de session et de de la récupérer dans l'autre userControl mais je trouve que les variables de sessions ne sont pas très stables (surtout quand on oublie de les détruire...).

Voila merci
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
22 déc. 2006 à 15:12
euh ???

Chaque nouvelle requete entraine un nouveau thread executant la page donc tu n'auras pas accés aux informations de l'autre page ... les variables de sessions sont plutot stable je trouve, et elles se détruisent automatiquement en fin de session !

<hr />Cyril - MVS - MCP
0
fomson91 Messages postés 5 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 26 décembre 2006
22 déc. 2006 à 16:55
En fait le problème que j'ai remarqué avec les variables de sessions est le suivant : Tu as une page ou tu initialise ta variable de session, tu la laisse ouverte. puis tu en ouvres une autre ou tu modifie cette variable de session.
Dans la première page tu n'auras plus la bonne valeur!!! enfin je crois.
Ya  pas un endroit dans VS ou je pourrai configurer le namespace par défaut de mon site (la racine par exple :) ). Ca serait plus simple...
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
22 déc. 2006 à 17:03
Relis ce que j'ai écrit plus haut ...

<hr />Cyril - MVS - MCP
0
fomson91 Messages postés 5 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 26 décembre 2006
26 déc. 2006 à 10:51
J'ai essayé la méthode ASP.monUC_ASCX mais il fait l'erreur: "Erreur 54 Le type ou le nom d'espace de noms 'monUC_ascx' n'existe pas dans la classe ou l'espace de noms 'ASP' (une référence d'assembly est-elle manquante ?) "
J'ai également utilisé la méthode de l'interface mais elle ne fonctionne pas pour les raisons que j'ai évoquées dans un de mes précédents posts.
Le Web Application Project et le Web Deployment Project ne sont pas installés...
Une fois que je les aurai installés, est ce que je pourrai facilement exporter mon site web vers l'un de ces deux modèles?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
26 déc. 2006 à 12:23
ASP.net fonctionne en mode deconnecté, chaque nouvelle requete créer un nouveau thread sur le server et récupere les dernieres variables de session.

Je ne sais pas pour quelles raisons tu n'arrives pas à caster ton UC comme il faut mais c'est inutile puisque l'instance que tu cherches est morte.

<hr />Cyril - MVS - MCP
0
Rejoignez-nous