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 :

[VB.NET] Génération dynamique de controles


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut [VB.NET] Génération dynamique de controles
    Bonjour,
    Je souhaiterais créer dynamiquement un control dans une webform.
    J'aimerais connaître la procédure à adopter. J'ai consulter différentes pages sur le forum mais je n'ai pas trouvé grand chose. J'ai trouvé un topics intéressant dans le forum WindowsForm, mais ça ne marche pas sous les webform (aparement)
    http://www.developpez.net/forums/vie...r%E9er+control
    Quelqu'un de motive pour m'aider ?
    Merci d'avance.

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Par défaut
    Bonjour Bisounux,

    Pour répondre à ta question, il me faudrait plus de détails sur l'utilisation de ton contrôle dynamique car je n'utilise pas toujours le même évènement pour les générer. Cela peut être lors du OnClick d'un bouton par exemple ou encore lorsque la page se charge.

    Voici donc une petite fonction très simple pour créer un textbox avec une valeur texte passé en paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Function CreerTextbox(ByVal strTexte As String) As System.Web.UI.WebControls.TextBox
            Dim monTextBox As System.Web.UI.WebControls.TextBox
            monTextBox.Text = strTexte
            Return monTextBox
    End Function
    Tu remarqueras que la fonction retourne le textbox qui a été créé. Cela va te permettre d'ajouter le contrôle dans la page où tu utilises la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.Controls.Add(CreerTextbox("Bonjour"))
    end Sub
    et voilà!

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    J'essaye de bosser sur un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim test As New GridView()
              Me.Controls.Add(test)
    Mais le souci :
    System.Web.HttpException: Control 'ctl02' of type 'GridView' must be placed inside a form tag with runat=server.
    Si quelqu'un a une idée.
    merci d'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    J'ai l'impression qu'il faut générer le code asp en plus pour lui "décrire" le control. Le problème c'est que je veux en créer à la volée sans savoir combien de gridviex je vais mettre dans le code avant la visiste de l'utilisateur.

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Par défaut
    Citation Envoyé par bisounux
    J'essaye de bosser sur un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim test As New GridView()
              Me.Controls.Add(test)
    Mais le souci :
    System.Web.HttpException: Control 'ctl02' of type 'GridView' must be placed inside a form tag with runat=server.
    Si quelqu'un a une idée.
    merci d'avance
    remplace
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.FindControl("Form1").Controls.Add(test)
    "Form1" est l'ID de la balise Form

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Ca fait une erreur :
    System.NullReferenceException: Object reference not set to an instance of an object.

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Par défaut
    Citation Envoyé par bisounux
    Ca fait une erreur :
    System.NullReferenceException: Object reference not set to an instance of an object.
    regarde dans ton code HTML et remplace "Form1" par l'ID de la balise suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <form id="Form1" method="post" runat="server">
    </form>
    Il se trouve généralement par défaut juste en dessous de la balise <body>

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Pratique...Merci, c'était une erreur de ma part. Deux petites questions pour terminer :
    Est qu'on peut choisir l'endroit de la page ou s'affiche le control générer par le code ? Comment?
    Est que ce principe d'ajout est généralisable à tous les autres controls?
    Merci beaucoup Crimson

  9. #9
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Par défaut
    Citation Envoyé par bisounux
    Est qu'on peut choisir l'endroit de la page ou s'affiche le control générer par le code ? Comment?
    Oui. Tu peux assigner une classe CSS à ton contrôle lors de sa création. Voici une classe simple de positionnement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .position
    {
        top:0;
        left:0;
    }
    il faut ensuite ce petit bout de code lors de la création du contrôle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        monControle.CssClass = "position"
    Citation Envoyé par bisounux
    Est que ce principe d'ajout est généralisable à tous les autres controls?
    Merci beaucoup Crimson
    tout à fait! Il existe même des contrôles qui peuvent contenir d'autres contrôles

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Justement, c'est le sujet de mon autre topic... Je veux utiliser les templates d'un datalist...En fait, je veux générer dynamiquement une datalist dans laquelle je génére dynamiquement d'autre control en fonction de la nature de mes données. Ca parait farfelue mais l'idée est assez simple. Cependant la pratique c'est autre chose

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/05/2006, 16h44
  2. [vb.net] probleme de construction de chaine dynamiquement
    Par graphicsxp dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/01/2006, 14h52
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  4. [VB.Net] Comment generer une page html dynamiquement ?
    Par Anonymous dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/03/2003, 10h22

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