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 :

Question sur le Src d'une directive Register


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut Question sur le Src d'une directive Register
    Salut tous le monde

    Dites moi je sais pas trop comment je peux faire pour afficher un usercontrol de façon dynamique selon les choix de mes utilisateurs.

    En gros dans mon code je pensais mettre seulement une seule balise usercontrol qui varierai en fonction du choix de la page à afficher fait par mon utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                   <uc:monBody id="body1" runat="server" /></div>
    Et de faire varier son affichage selon les choix de mes utilisateurs en modifiant la cible src dans la directive @Register que j'ai renseigné juste après ma directive @Page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="index.aspx.vb" Inherits="_Default" title="Untitled Page" %>
    
    <%@ Register TagPrefix="uc" TagName="monBody" 
        Src="~\emp_creerndf.ascx" %>
    [...]
    Mais le problème c'est que je peux pas foutre de variable pour faire varier ma src, donc je suppose qu'il y a une méthode simpliste au possible pour faire la même chose mais de façon propre et optimiser.

    Merci d'avance

  2. #2
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    Tu places un panel sur ta page .aspx et pis c'est tout.
    Ce panel est censé afficher ton futur usercontrol.

    En code-behind, tu vas utiliser la méthode loadcontrol (voir section USERCONTROL dans la FAQ) et tu vas ajouter ce même contrôle au panel. (un truc du style monpanel.controls.add(monusercontrol))

    Je crois que cela devrait passer sans avoir à toucher au register.

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Merci pour ton aide ca m'aide grandement à avancé.
    Mais je bute toujours sur l'exemple de la FAQ qui est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim uc As monUserControl = CType(LoadControl("~/monUserControl.ascx"), monUserControl)
    monPlaceHolder.Controls.Add(uc)
    Le problème vient de la déclaration de la variable "uc" en tant que monUserControl, le problème est que mon user control (extension ascx), n'apparait pas du tous dans la liste des types que je peux déclarer.

    La page où je veux faire apparaitre dynamiquement des user control ressemble à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="pbody">
            <asp:Panel ID="Panel1" runat="server">
                test
            </asp:Panel>            
        </div>
    Dans le code behind j'essaye de mettre le code comme dans la FAQ mais cela ne passe pas du tous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim uc As PASDECHOIX = CType(LoadControl("~/emp_creerndf.ascx"), PASDECHOIX)
            Panel1.Controls.Add(uc)
    En gros je me demande comment je peux faire pour que à partir de ma page aspx je puisse déclarer ma variable "uc" de ce type.
    Vous pourriez m'éclairer ?


    EDIT :

    Pour être plus précis, parce que je sens que je pars dans une bien mauvaise direction, quand mon utilisateur clique sur un lien dans le menu, l'url généré est la suivante :

    ~/index.aspx?pages=responsable&ak=resp_validerndf

    En gros je veux pouvoir recuperer les informations en GET qui m'indiqueront quel dossier il faut fouiller, et dans celui ci quelle page il faut inclure.
    Cette page je voudrais l'inclure dans le panel que je vous ai présenté ci-dessus, mais j'ai lu dans divers forum, qu'il ne faut plus utiliser de include en ASP.net, mais qu'il fallait se servir des usercontrol.

    Quelle est la vérité dans tous cela ?

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ca veut dire quoi ça passe pas?
    Ca compile pas?

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Salut Lutece

    Bah ca compile pas parce que mon fichier *.ascx ne m'a pas généré de classe qui me permette de typer une variable, du coup je ne peux pas déclarer ma variable "uc" du type de mon control.

    PS : lis mon édit du sujet précédent si ca peut t'aider à comprendre mon problème. :.?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    UserControl oui, pas de include.

    Ensuite, t'as forcément une classe "associée" à ton user control.
    Tu l'as bien déclarée public?

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    J'ai déclaré la variable "uc" de type usercontrol qui est la classe générique il me semble, et ca à l'air de fonctionner plus ou moins en faisant cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim uc As UserControl = CType(LoadControl("~/emp_creerndf.ascx"), UserControl)
            Panel1.Controls.Add(uc)
    Avec ca je pense que je vais pouvoir faire un body dynamique. Est ce vraiment la meilleur méthode ?

    EDIT :

    Citation Envoyé par lutecefalco Voir le message
    UserControl oui, pas de include.

    Ensuite, t'as forcément une classe "associée" à ton user control.
    Tu l'as bien déclarée public?
    mon user control est bien déclaré public

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par remibeginer Voir le message
    J'ai déclaré la variable "uc" de type usercontrol qui est la classe générique il me semble, et ca à l'air de fonctionner plus ou moins en faisant cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim uc As UserControl = CType(LoadControl("~/emp_creerndf.ascx"), UserControl)
            Panel1.Controls.Add(uc)
    Avec ca je pense que je vais pouvoir faire un body dynamique. Est ce vraiment la meilleur méthode ?

    EDIT :



    mon user control est bien déclaré public
    Bof, si t'es en 2.0, vaut mieux passer par une MasterPage

  9. #9
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    J'ai bien une master page, mais le problème c'est que ca me fait dupliqué un minimum de code, alors que je veux que ce soit complètement dynamique.

    Enfin bref ca marche en déclarant la variable UC du type usercontrol, donc je vais mettre le topic en résolu.

    Merci beaucoup à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question sur l'utilisation d'une listBox
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 02/06/2006, 17h57
  2. petite question sur la récupération d'une variable
    Par minusette dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2005, 16h57
  3. Question sur la création d'une table
    Par air dans le forum Oracle
    Réponses: 4
    Dernier message: 23/10/2005, 12h46
  4. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  5. question sur la creation d'une base
    Par vbcasimir dans le forum Débuter
    Réponses: 4
    Dernier message: 27/05/2005, 11h17

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