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 :

Utilisation d'un PlaceHolder


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut Utilisation d'un PlaceHolder
    Bonjour,

    J'écris une appli dans laquelle je dois permettre à l'utilisateur de saisir 1 à n lignes contituées comme suit :
    2 textbox, 1 dropdownlist et un bouton de validation

    Au 1er affichage, la page ne contient qu'une seule ligne avec les textbox vides.
    L'utilisateur saisit les textbox, selectionne un item de la ddliste et clique sur le bouton de validation.
    Sur le click de validation, je veux conserver les saisies déjà effectuées et générer une nouvelle ligne de saisie vierge avec les mêmes contrôles pour une nouvelle saisie éventuelle.

    Pour celà, j'utilise un contrôle PlaceHolder et le code suivant :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <asp:PlaceHolder ID="plhConditions" runat="server"> 
    <asp:TextBox ID="txtDateDeb1" runat="server"></asp:TextBox> 
     
    <asp:TextBox ID="txtDateFin1" runat="server"></asp:TextBox> 
     
    <asp:DropDownList ID="ddlConditions1" runat="server"> 
    </asp:DropDownList> 
    <asp:Button ID="cmdValid1" runat="server" Text="Valider" /> 
    </asp:PlaceHolder>


    Code vb : 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
    34
    35
    36
    37
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     
    CType(Me.plhConditions.FindControl("ddlConditions1"), DropDownList).Items.Add("Condition 1") 
    CType(Me.plhConditions.FindControl("ddlConditions1"), DropDownList).Items.Add("Condition 2") 
     
    AddHandler CType(Me.plhConditions.FindControl("cmdValid1"), Button).Click, AddressOf subChange 
     
    End Sub 
     
     
     
    Public Sub subChange(ByVal sender As Object, ByVal e As System.EventArgs) 
    Dim sID As String = (Convert.ToInt32(CType(sender, Button).ID.Substring("cmdValid".Length)) + 1).ToString 
     
     
    Dim oTextBox1 As New TextBox 
    oTextBox1.ID = "txtDateDeb" & sID 
    Me.plhConditions.Controls.Add(oTextBox1) 
     
    Dim oTextBox2 As New TextBox 
    oTextBox2.ID = "txtDateFin" & sID 
    Me.plhConditions.Controls.Add(oTextBox2) 
     
    Dim oDDList As New DropDownList 
    oDDList.ID = "ddlConditions" & sID 
    oDDList.Items.Add("Condition 1") 
    oDDList.Items.Add("Condition 2") 
    Me.plhConditions.Controls.Add(oDDList) 
     
    Dim oButton As New Button 
    oButton.ID = "cmdValid" & sID 
    oButton.Text = "Valider" 
    Me.plhConditions.Controls.Add(oButton) 
    AddHandler oButton.Click, AddressOf subChange 
     
     
    End Sub


    Le pb est que sur le click de validation , le PlaceHolder ne conserve pas les contrôles précédents !!!
    Quelqu'un a une idée ?


    Merci pour vos réponses

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Par défaut
    Bonjour,

    Et si tu utilisais un Repeater/ListView (comme tu veux) avec TextBox-DropDowList et du côté CodeBehind, tu enregistrais les saisies utilisateur dans un DataSet.

    1 nouvelle ligne = 1 ligne vide dans ton DataSet
    Bouton "Valider" = récupération des données et sauvegarde dans ton DataSet.




    Seb

  3. #3
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut Utilisation du PlaceHolder
    Ca peut effectivement être une solution.
    Mais j'aimerais comprendre pourquoi ma solution ne fonctionne pas ?
    Merci pour ta réponse

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Par défaut
    Bonjour,

    Ma réponse est aussi valable pour la proposition que je t'ai faite.
    Il me semble que tu dois régénérer à chaque fois le contenu de ton placeHolder avant de lire son contenu.

    C'est à dire que lors de la validation, avant de lire les données entrées par l'utilisateur, tu dois commencer par créer test lignes avec TextBox-DropDowList-Bouton dans le placeHolder.
    Donc lors de la 1e validation, tu dois créer 1 ligne puis lire les données.
    Lors de la 2e validation (donc 2 lignes), tu dois créer 2 lignes puis lire les données.



    Seb

Discussions similaires

  1. Utiliser les placeholder avec un model
    Par thor76160 dans le forum ASP.NET MVC
    Réponses: 5
    Dernier message: 02/01/2013, 14h13
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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