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 :

appel usercontrol code behind


Sujet :

ASP.NET

  1. #1
    Chimique
    Invité(e)
    Par défaut appel usercontrol code behind
    Bonjour,

    J'aimerai appeler mon user control et definir dynamiquement la valeur de l'attribut "etape" :

    Deux solutions :

    - en asp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uc:filAriane ID="FilAriane1" etape="1" runat="server" />
    Mais alors comment modifier la valeur de "etape" depuis le code behind de la page qui appelle le control (pas le code behind du control en question) ?

    - en VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub setFilAriane(ByVal etape As String)
            Dim NouveauFilAriane As Control = LoadControl("fil-ariane.ascx")
            filAriane.Controls.Add(NouveauFilAriane)
        End Sub
    Mais alors y-t-il une métohde pour ajouter des attributs custom dans le control et setter leurs valeurs ?

    Ou bien voyez-vous une troisième méthode ?

    Merci

  2. #2
    Membre éclairé 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
    Points : 755
    Points
    755
    Par défaut
    Vraiment je ne vois pas où est le problème. Sache qu'une instance d'objet peut accéder aux membre public de ce même objet.
    donc
    - en asp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uc:filAriane ID="FilAriane1" etape="1" runat="server" />
    Mais alors comment modifier la valeur de "etape" depuis le code behind de la page qui appelle le control (pas le code behind du control en question) ?
    => FilAriane1.etape=xxxx;
    - en VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub setFilAriane(ByVal etape As String)
            Dim NouveauFilAriane As Control = LoadControl("fil-ariane.ascx")
            filAriane.Controls.Add(NouveauFilAriane)
        End Sub
    Mais alors y-t-il une métohde pour ajouter des attributs custom dans le control et setter leurs valeurs ?
    => filAriane.etape=xxxx;

  3. #3
    Chimique
    Invité(e)
    Par défaut
    Merci.

    J'essaye avec mon control :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Partial Class controls_fil_ariane
        Inherits System.Web.UI.UserControl
     
        Public etape As String
     
    End Class
    et ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub setFilAriane(ByVal etapeAppele As String)
            Dim NouveauFilAriane As Control = LoadControl("fil-ariane.ascx")
            filAriane.etape = etapeAppele
            filAriane.Controls.Add(NouveauFilAriane)
        End Sub
    Ce qui me génère l'erreur :

    'etape' n'est pas un membre de 'System.Web.UI.HtmlControls.HtmlGenericControl'.
    J'ai oublié quelque chose ?

  4. #4
    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 : 40
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Je pense que le problème vient de la manière dont tu instancies ton UserControl.
    En effet, tu l'instancies en tant que "Control".
    Ce faisant, tu n'as pas accès aux propriétés du type "controls_fil_ariane".

    Il faut que instancies un UserControl fortement typé pour pouvoir accéder à ses propriétés publiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub setFilAriane(ByVal etapeAppele As String)
    Dim NouveauFilAriane As controls_fil_ariane
    NouveauFilAriane = CType(LoadControl("fil-ariane.ascx"), controls_fil_ariane)
    filAriane.etape = etapeAppele
    filAriane.Controls.Add(NouveauFilAriane)
    End Sub
    Par contre, j'ai un gros doute sur ta dernière ligne : filAriane.Controls.Add(NouveauFilAriane)
    filAriane est bien une page ?

  5. #5
    Chimique
    Invité(e)
    Par défaut
    Merci.

    Avec cette façon de faire l'erreur persiste, mais ça vient peut-être de filAriane qui est l'ID d'une div dans laquelle j'ajoute mon control et non pas une page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="filAriane" runat="server" ></div>

Discussions similaires

  1. Appeler du code behind depuis un script Jquery
    Par keryss dans le forum ASP.NET
    Réponses: 2
    Dernier message: 27/06/2011, 08h50
  2. [.net]Appeler une fonction située dans le code behind
    Par anto dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/05/2009, 13h05
  3. Appeler du code behind depuis un événement javascript :
    Par FredChautems dans le forum ASP.NET
    Réponses: 8
    Dernier message: 24/03/2008, 13h36
  4. Appeler du code behind depuis un événement javascript :
    Par FredChautems dans le forum Framework .NET
    Réponses: 0
    Dernier message: 20/03/2008, 12h59
  5. Réponses: 5
    Dernier message: 01/08/2006, 13h41

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