IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Récupérer un Composant Utilsateur en CodeBehind


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Récupérer un Composant Utilsateur en CodeBehind
    Salut tout le monde

    Je cherche àfaire une truc qui me paraissait simple mais arrivé devant le code, je sèche.

    J'ai fais différent Composant Utilisateur (ASCX) et là, je voudrias en récupérer un, mais par le CodeBehind, directmetn dans une classe Externe.

    Je ne trouve pas le moyen de faire une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim toto AS new MonComposant
    Mais quand je dis que je trouve pas, c'est je ne sais même pas par quoi commencé.
    J'ai essayé avec un namespace, en passant par le nom de la PartialClass et pas mal d'autre trucs, mais rien n'y fait.

    Pourriez vous m'aider ?

    PS : en plus, je crois qu'on m'a déjà expliqué dans un topic, mais je le retrouve pas non plus. Décidément, aujourd'hui, c'est pas le jour.......

  2. #2
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,

    Tu veux récupérer le control entier ou seulement la valeur de l'une de ses propriétés.?

    a+

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Le but est récupérer le composant en entier pour l'ajouter dans la page en faisant un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.Control.Add(toto)

  4. #4
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyUC myUC = (MyUC)Page.LoadControl("MyUC.ascx");
    Je suppose que le webform et l'user control MyUC.axcs se trouve sur le même niveau d'arborescence sinon il faut spécifier le chemin.

    En espérant t'avoir aidée.

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Une fois remis en VB.NET ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim testgal As MyUC = DirectCast(Page.LoadControl("moncomposant.ascx"), MyUC)
    Et là il me dis que MyUC est un type non défini.
    Je ne sais pas quoi lui mettre à la place.

  6. #6
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Dans la page qui va utiliser le control, il faut le declarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Register TagPrefix="MyCtl" Namespace="Dvp.Controls" Assembly="MesControles" %>
    Voir le lien (c'est du csharp mais c'est pas le code qui t'interesse) :
    http://www.tuto-geek.com/tutoriaux/c...851953f83dde91

  7. #7
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    ok, j'ai compris le principe.
    En fait, il faut déclarer le contrôle comme une sorte de type pour y avoir accès.

    L'ennui dans mon cas c'est que je l'appelle à partir d'une classe externe, du coup, je ne peux pas placer le tag @register.
    Par contre, je peux faire un truc dans le web;config, mais j'ai pas trouvé quoi exactement.

  8. #8
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364

  9. #9
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Désolé d'être pas doué, mais j'ai pas compris.

    Pourtant l'explication à l'air simple.

    Dans mon Web.Config j'ai rajouté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <add tagPrefix="CtrlPerso" namespace="ProjetY"/>
    J'ai pas mis d'assembly, parce que je ne sais pas quoi mettre, en fait.
    Mais c'est la suite que je capte pas bien. Dans ma classe externe, il me dit toujours que CtrlPerso est indéfini (ler premier).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim gal As CtrlPerso = DirectCast(Page.LoadControl("MyUC.ascx"), CtrLPerso)
    Et j'ai fait un recompilation global de ma solution.

  10. #10
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Une fois remis en VB.NET ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim testgal As MyUC = DirectCast(Page.LoadControl("moncomposant.ascx"), MyUC)
    Et là il me dis que MyUC est un type non défini.
    Je ne sais pas quoi lui mettre à la place.
    Dans ton cas ça doit être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim testgal As moncomposant= DirectCast(Page.LoadControl("moncomposant.ascx"), moncomposant)
    si tu n'a pas changé le nom de la class de l'user control dans le code behind.
    Vu aussi que tu le charge dynamiquement en code behind, tu n'a pas besion de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Register TagPrefix="MyCtl" Namespace="Dvp.Controls" Assembly="MesControles" %>

  11. #11
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide.

    Alors je viens de metre ceci dans ma classe externe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim testgal As Module_Integre_GaleriePhoto = DirectCast(Page.LoadControl("~/Module/Integre/GaleriePhoto.ascx"), Module_Integre_GaleriePhoto)
    Comme ça, on à le chemin complet pour aller dans le composant et le nom de la callse dans le CodeBehind du User.

    Non, je n'ai rien changé au niveau de la PartialClass du composant.
    J'ai fait un essai en ne mettant que GaleriePhoto, mais cela n'a rien changé il me dit toujours qu'il est indéfini.

    Et j'ai refait une compialtion compleète.

  12. #12
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Si tu n'a rien changé au niveau de class partial, pourquoi le nom (GaleriePhoto.ascx) de ton user control est différent de celle de ton class ( Module_Integre_GaleriePhoto)?

    Ce n'est pas obligatoire mais ça pourrait être une source de problème si tu te trouves dans un gros projet dans lequel tu peut avoir plusieurs user control, donc pas de temps de dire: quelle est la classe qui correspond à un tel user control.

  13. #13
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Pour faire plus simple, je vais psoter les début des deux fichier (HTML et CodeBehind). Je ne modifie jamais rien sur le Contrôle User, mais vu qu'il sont dans des répertoires, peut-être que ça joue.

    Donc, le ficher HTML y ça au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="GaleriePhoto.ascx.vb" Inherits="Module_Integre_GaleriePhoto" %>
    Ensuite ce sont les contrôel ASP ou html qui viennent

    Code Behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Imports System.Net
     
    Namespace ProjetY
        Partial Class Module_Integre_GaleriePhoto
            Inherits System.Web.UI.UserControl
    Ensuite viennent les évènements des contrôles et mes procédure et fonction à moi.
    Dans mon site (qui est un WebSite et pas une webapplication) j'ia fait un répertoire Modules et nue sous répertoire Integre dans le quel se trouve le composant concerné.

    Vois tu d'où pourrait venir le souci ?

  14. #14
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="GaleriePhoto.ascx.vb" Inherits="ProjetY.Module_Integre_GaleriePhoto" %>
    Tu as oublie de mettre le namespace de la classe pour la valeur de l'attribut inherits

  15. #15
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    J'ai rajouté le NameSpace, mais toujours pareil, le type est indéfini.

    Une autre idée ?

  16. #16
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Compile ton projet, ferme Visual Studio et relance le tout.
    Pas toujours simple de faire référencer un UserControl dans VS...

  17. #17
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide calagan99.

    Donc, j'ai compilé le projet. L'erreur de type indéfii est apparue.
    J'ai fermé le projet et réouvert et toujorus pareil, l'erreur est toujours là.

    Une autre idée ?

  18. #18
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,
    Peux tu ajouter une directive référence dans le code balise(Source view) de la page qui va héberger l'UC:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Reference Control="~/Module/Integre/GaleriePhoto.ascx"%>
    a+

  19. #19
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    tu veux ajouter un control dynamiquement c'est ça?
    tu peux regarder du coté des contentplaceholder. ca sert à ça.

  20. #20
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Citation Envoyé par rattlehead Voir le message
    tu veux ajouter un control dynamiquement c'est ça?
    tu peux regarder du coté des contentplaceholder. ca sert à ça.
    Merci pour ton aide.

    Les CPH, c'est déjà la base de mon système. Là je ne peux pas les utiliser car je suis dans une classe externe et je veux ajouter le composant dynamiquement dans un autre composant qui lui sera inséré dans un CPH.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/03/2012, 10h23
  2. récupérer taille composant
    Par maximeG dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 10/09/2009, 16h12
  3. récupérer un composant effacé de la palette
    Par roland34 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/08/2009, 08h12
  4. Réponses: 13
    Dernier message: 08/07/2006, 12h42
  5. Récupérer les composants visuels de toute l'application
    Par sessime dans le forum Composants VCL
    Réponses: 4
    Dernier message: 27/02/2006, 09h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo