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 :

Création des contrôles utilisateurs dynamiquement


Sujet :

ASP.NET

  1. #1
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut Création des contrôles utilisateurs dynamiquement
    Bonjour tous le monde,

    J'ai essayé d'ajouter des contrôles Web utilisateurs dans ma page ASPX dynamiquement comme montre cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public partial class _Default : System.Web.UI.Page 
    {
        Control uc;
     
        private void addControl(string _name)
        {
            uc = LoadControl(_name);
            Panel1.Controls.Add(uc);             
        }
     
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
     
        protected void Button1_Click(object sender, EventArgs e)
        {        
            addControl("wuc1.ascx");        
        }
     
        protected void Button2_Click(object sender, EventArgs e)
        {
            addControl("wuc1.ascx");     
        }    
    }
    Mes contrôles utilisateurs contient juste un bouton et un label.

    Jusqu'à mnt tout est bon, mais le problème c'est au moment que je clique sur le bouton (user control) la page ASCX ne s'affiche pas !!

    Merci pour vos aides.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    tu es sur de ton chemin de ton control?
    essai avec "~/Nom_Du_Control".
    Met un point d'arret apres ton LoadControl pour voir si il le trouve bien

  3. #3
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Le chemin est correct, le UC ne s'affiche pas car dans la page_load de mon ASPX contient rien d'où ce probleme!!

    Y a t-il une methode pour eviter ça ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    sinon tu met ton addControl dans le load.

    dans le ascx tu met dans le panel l'attribut Visible="False"

    ensuite dans le click tu passe la variable a true

    Mais je pense pas que ton probleme vienne de la .
    t'as essayer de mettre un point d'arret(breakpoint) pour voir si ton control est bien loade avant le add

  5. #5
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Merci pour tes réponses.. Peux tu voir le ficher attaché ? ça va te permettre très bien de connaître mon problème.

    Merci bien
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    j'ai test le soucis c'est que la au boulot je suis encore en 2003 (bientot 2005 lol)

    faut que je changepas mal de truc mais sinon j'ai reussi a affiche ton control dans le panel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    private void Page_Load(object sender, System.EventArgs e)
    		{
    			Control uc = LoadControl("wuc1.ascx");
    			_pnPanel.Controls.Add(uc);
    			_pnPanel.Visible = false;
    		}
     
    		#region Web Form Designer generated code
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
     
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{    
    			this.Button1.Click += new System.EventHandler(this.Button1_Click);
    			this.Load += new System.EventHandler(this.Page_Load);
     
    		}
    		#endregion
     
    		private void Button1_Click(object sender, System.EventArgs e)
    		{
    			_pnPanel.Visible = true;
    		}
    ou

    juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		private void Button1_Click(object sender, System.EventArgs e)
    		{
    			Control uc = LoadControl("wuc1.ascx");
    			_pnPanel.Controls.Add(uc);
    		}
    marche ici.

    Je pourrais test sur Vs2005 que demain quand je serais chez moi
    desoler

  7. #7
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Merci bien, j'attend pour demain

    Tu verras que après que tu cliques sur "Charger UC2" ou "Charger UC1" il faut cliquer 2 fois sur le bouton du fichier ASCX pour que ça marche !!

  8. #8
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    PAs de réponse ?

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    je crois que tu vas pas aime ce que je vai te dire.

    Tout d'abord desole j'ai mis du temp mais j'en avait pas beaucoup dernierement.

    Sinon j'ai teste ton package et il marche nickel chez moi.
    quand je click sur les boutons les 2 uc ce charge comme il faut et les boutons dans les UC fonctionne aussi.
    tu as tjs un probleme avec?

  10. #10
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Ouii tjs le même problème, au démarrage ça fonctionne bien mais dés que je me place sur un autre controle alors là il me faut cliquer 2 fois pour que ça marche bien !! Problème de cache ? Webconfig ?????

  11. #11
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Non non, c'est le problème vient de ta programmation.
    On peut voir ton code là maintenant ?
    Pas un .rar, juste ce qui concerne le chargement des contrôles.

  12. #12
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Je souhaite bcp que le problème vient de mon code, le voici :

    Default.aspx.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public partial class _Default : System.Web.UI.Page 
    {
        Control uc;    
     
        private void addControl(string _name)
        {
            Panel1.Controls.Clear();
            uc = LoadControl(_name);
            Panel1.Controls.Add(uc);             
        }   
     
        protected void Page_Load(object sender, EventArgs e)
        {
            //Response.Write("<b>" + App.nameUC + "</b>");
            if (IsPostBack && App.nameUC != null)
                addControl(App.nameUC);
        }
     
        protected void Button1_Click(object sender, EventArgs e)
        {
            App.nameUC = "wuc1.ascx";
            addControl(App.nameUC);
        }
     
        protected void Button2_Click(object sender, EventArgs e)
        {
            App.nameUC = "wuc2.ascx";
            addControl(App.nameUC);
        }    
    }
    wuc1.ascx.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public partial class wuc1 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
        protected void btnUC1_Click(object sender, EventArgs e)
        {
            lblUC1.Text = DateTime.Now.ToLongTimeString();        
        }
    }
    wuc2.ascx.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public partial class wuc1 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
     
        protected void Button1_Click1(object sender, EventArgs e)
        {
            lblUC2.Text = DateTime.Now.ToLongTimeString();       
        }
    }
    App.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public class App
    {
        private static string pNameUC;
     
    	public App()
    	{
     
    	}
     
        public static string nameUC
        {
            get { return pNameUC; }
            set { pNameUC = value; }
        }
    }

    Lors du chargement ça marche bien mais dés que je passe sur un lien alors je dois cliquer sur le bouton de chaque UC 2 fois pour que ça marche bien...

    Merci pour la lecture

  13. #13
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Pourquoi y'a un IsPostPack dans le if de ton Page_Load ?

  14. #14
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Tout simplement car je ne vx pas charger mon UC au Pag_Load

  15. #15
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    C'était pas une question innocente.

  16. #16
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Essaye de tester le code et tu vas certainement comprendre

  17. #17
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Ce que je voulais dire c'est que tu n'as pas besoin de tester si tu es en PostBack ou pas.
    Ton App.nameUC doit suffir à te dire si oui ou non tu dois instancier ton control. Ca t'évitera un effet de bord possible (suivant comment tu gères le App.nameUC entre les postbacks).

    Bon sinon j'ai testé ton code et il fonctionne très bien. (sans le IsPostBack et avec)
    Je t'invite à le tester très simplement, (dans une nouvelle page vide, avec des contrôles qui ne contiennent que "control1" et "control2").
    Ton problème est dû à un effet de bord de code que tu n'as pas publié.

  18. #18
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Un effet de bord ? ça veut dire quoi exactement !!

  19. #19
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    c'est un effet secondaire
    Vulgairement on pourrait dire que ton code se chevauche.
    c'est a dire qu'il s'emmelle un peu les pinceaux a un moment donne dans ton code.

    Comme l'a dit Mose retest ton code dans un projet vide car chez moi il marche aussi comme je te l'ai marque.

  20. #20
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    D'accord je vais réessayer de tester et je vous informerai après...

    Merci pour vos tests et vos réponses.

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/12/2007, 15h48
  2. Supprimer un contrôle utilisateur dynamiquement
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/06/2007, 01h03
  3. Chargement dynamique des contrôles utilisateurs
    Par outat dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/04/2007, 12h11
  4. Création des comptes utilisateurs a partir d'un script et fichier texte
    Par hocine1978 dans le forum Administration système
    Réponses: 2
    Dernier message: 26/12/2006, 14h11
  5. Tests unitaires avec vbUnit sur des contrôles utilisateurs
    Par Patrick Mortas dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/09/2006, 18h06

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