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 :

load plusieurs ascx dans une page


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 433
    Par défaut load plusieurs ascx dans une page
    alut,

    mon problème est le suivant :

    j'ai une page aspx qui contient un placeholderetplusieurs controls ascx.

    j'ai trouvé comment faire pour charger un control ascx ds le placeholder

    le code est le suivant pourle control home.ascx:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     home control1 = ctype(Page.LoadControl("home.ascx"), home);
    placeholder1.controls.add(control1);
    mon soucis c'est que je veux realiser ça dynamiquement pour le reste

    par exemple pour le control test.aspx (le nom de la classe c'est Test)
    le syntaxe ça va être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Test  control1  = ctype(Page.LoadControl("Test.ascx"), Test);
    placeholder1.controls.add(control1);
    ma question est la suivante: comment faire une declaration dynamique.
    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Maclase  control1=ctype(Page.LoadControl(nomcontrol), Maclasse);
    placeholder1.controls.add(control1);
    pour le nomcontrol c'est simple

    mais je vois pas comment faire pour Maclasse

    des idées??

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    La réponse tient en deux mots:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maclasse  control1 = ...
    Comme ça tu ne peux pas car l'objet que tu demandes est forcement de type MaClasse.

    Pour pouvoir faire ça il faut utiliser une "Fabrique" et des "Interface". Cependant, ta fonction ne te renverra que des objets ayant les mêmes propriétés et méthodes. Un bon exemple est la DbProviderFactory. Cette factory permet d'obtenir des objets d'accès aux données en précisant le fournisseur dans le web.config.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 433
    Par défaut
    merci pour ta réponse mais j'ai rien compris.

    je récupère le nom du contrôle à partir d'une table
    par exemple avec un id=1, je récupère le contrôle home.ascx
    donc je récupère le nom de la classe =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_classe=nomcontrole.substring(0,nomcontrole.infexof("."));
    donc j'ai le nom de la classe c'est home

    maintenant je charge mon controle dans le placeholder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    home control1 = ctype(Page.LoadControl("home.ascx"), home);
    placeholder1.controls.add(control1);
    je fais la meme chose pour chaque ligne dans la table

    mon ceci au lieu d'écrire manuellement home contol1=................ pour le1
    et Test control1=.........................pour le 2
    .
    .
    .
    .et et Exemple control1=.........................pour le n

    je cherche une solution dynamique?
    j'espere que j'ai bien expliquer mon problème

  4. #4
    LEK
    LEK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Par défaut
    Salut zalalus, la solution d'Immobilis répond parfaitement à ta question mais elle demande quelque connaissance en programmation orienté objet (Tu pourras tuojours revenir là dessus plus tard). En attendant une solution simple, si tu veux seulement charger dynamqieuement ton contrôle consisterais à le charger ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Control control1 = Page.LoadControl("home.ascx");
    placeholder1.controls.add(control1);
    ainsi tu as charger dynamiquement ton user control....

    Voilou,
    Lek.

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par LEK Voir le message
    En attendant une solution simple, si tu veux seulement charger dynamqieuement ton contrôle consisterais à le charger ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Control control1 = Page.LoadControl("home.ascx");
    placeholder1.controls.add(control1);
    ainsi tu as charger dynamiquement ton user control....

    Voilou,
    Lek.
    Effectivement bonne solution. Ou sinon dans le même esprit que ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Test  control1  = ctype(Page.LoadControl("Test.ascx"), Test);
    placeholder1.controls.add(control1);
    Si le nom de ta classe est "Home"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserControl ctrl = (UserControl)Page.LoadControl(typeof(Home), null);
    Cette déclaration permet d'être plus explicite sur les objets employés. Le deuxième paramètre (null dans ce cas) permet de passer des arguments au constructeurs.

    Mais bon, tu ne pourras pas accéder aux propriétés spécifiques que tu auras créé.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2008, 17h47
  2. plusieurs formulaires dans une page
    Par momo79379 dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2008, 11h41
  3. [Struts-Layout] plusieurs datagrid dans une page jsp
    Par CaptainCyd dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/06/2007, 16h43
  4. Plusieurs forms dans une pages aspx
    Par nephhh dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/02/2007, 20h19
  5. [débutant] appeler plusieurs methodes dans une page html
    Par soulhouf dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/08/2005, 19h20

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