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 :

Ajouter des champs dans un formulaire.


Sujet :

ASP.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Ajouter des champs dans un formulaire.
    Bonjour,

    Voila j'ai un formulaire avec des champs textbox(2).
    J'ai crée mon web user cotnrol pour représenter ces deux textbox.
    Dans mon formulaire j'ai un bouton qui ajoute une fois ce control utilisateur.

    Problème :

    Quand je clique sur un bouton (du genre envoyer ou meme "ajouter une ligne"), la page se reinitialise (tout les control affichés sont ceux présent de base dans le .aspx).Du coup :

    - je ne peut pas ajouter plus d'une ligne
    - je ne peut pas accéder aux donnée entrée dans les champs ajoutés (par l'utilisateur).

    Code invoqué lors de l'appui le bouton "ajout d'une ligne"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected void ajouter_une_ligne(object sender, EventArgs e)
        {
                 ligne l = (ligne)Page.LoadControl("~/ligne.ascx");
    //panel2 est un panel dans mon formulaire
                Panel2.Controls.Add(l);
    Panel1.Update();   
            }        
     
        }
    mais dans le code que j'utilise apres un lick sur le bouton "enregistrer", je n'arrive pas a retrouver les valeurs insérée dans les champs rajouté

    voila, si vous avez compris ....

  2. #2
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Ceci est parfaitement normal.

    Renseigne toi sur le "cycle de vie d'une page/d'un web control"
    Tu verra que chaque appel au code behind fait automatiquement un postback, ce qui entraine la réinitialisation de ta page/webcontrol et donc des controls fils.

    Si tu veut mémoriser les champs saisis par l'utilisateur, il te faut le faire avant la réinitialisation, et je te conseille de le faire dans une classe dite de Modèle, qui mémorisera tous tes champs (voit la comme un dépot de données tout bete). Arrange toi pour que cette classe soit serializable, tu pourra ainsi la passer dans le ViewState / en Session si tu en as besoin.

    N'hesite pas à faire 2 - 3 recherches sur le cycle de vie, le ViewState, etc...

    C'est très instructif
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup. Quand on a commencé (comme ebaucoup) la prog web par le php on a du mal a capter ce fonctionnement.

    Vais faire ces recherches la

  4. #4
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Pas de problème, c'est normal.

    Reviens par ici en cas de question précise
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Alors voila je commence a comprendre :

    Quand on ajoute des champs via un click sur un bouton par exemple (auxquels il faut donner des id unique par programmation), il faut ensuite initialitser ces champs la dans Page_Init, car c'est apres cette méthode que le framework associe les ID des controle aux valeurs envoyée par le client.

    1/init des controle de l'aspx avec leur valeur de base
    2/appelle page_init <-- ici qu'on insère nos controle
    3/associe Id controle et valeur postée
    4/page_load
    5/(peut etre) méthode appellée par l'évènement lancé (click sur un bouton, selection etc).

    Donc il faut bien se souvenir que les methode du style page_init ou page_load sont appelée meme apres un évènement, meme en ajax, et que notre methode click_sur_bouton(object sender,eventargs e) n'est appelée que apres ! (et ce deroulement se fait aussi si j'utilise click_sur_bouton dans mon code).

    Voila j'espère que ça aura éclairé des lanternes, et si je me suis trompé, corrgiez moi

  6. #6
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donc il faut bien se souvenir que les methode du style page_init ou page_load sont appelée meme apres un évènement, et que notre methode click_sur_bouton(object sender,eventargs e) n'est appelée que apres ! (et ce deroulement se fait aussi si j'utilise click_sur_bouton dans mon code).
    Oui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donc il faut bien se souvenir que les methode du style page_init ou page_load sont appelée meme apres un évènement, meme en ajax, et que notre methode click_sur_bouton(object sender,eventargs e) n'est appelée que apres ! (et ce deroulement se fait aussi si j'utilise click_sur_bouton dans mon code).
    Pas si sur... L'ajax ne fait pas de retour serveur, donc pas de postback, donc pas de reload de la page (en tous cas c'est comme ca que je l'ai comris, me trompe ptet !)
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par hed62 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donc il faut bien se souvenir que les methode du style page_init ou page_load sont appelée meme apres un évènement, meme en ajax, et que notre methode click_sur_bouton(object sender,eventargs e) n'est appelée que apres ! (et ce deroulement se fait aussi si j'utilise click_sur_bouton dans mon code).
    Pas si sur... L'ajax ne fait pas de retour serveur, donc pas de postback, donc pas de reload de la page (en tous cas c'est comme ca que je l'ai comris, me trompe ptet !)
    Pour moi, tu te trompes mais pas sûr à 100%

  8. #8
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Pour moi, tu te trompes mais pas sûr à 100%
    Je confirme qu'il se trompe.

    En fait, même avec une requête Ajax, l'ordre des événements d'une Page Asp.NET est respecté.. soit le Init, Load, ...
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  9. #9
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Mais dans ce cas, seule une partie de la page se recharge ? sinon je n'ai pas compris l'interet d'ajax...

    Pour moi ajax est une nouvelle techno (ou plutot une nouvelle utilisation de techno anciennes, a savoir xml + JS principalement) pour éviter d'avoir trop d'aller retours serveur.

    Donc si il n'y a pas de retour serveur, pour moi il n'y a pas de reload de la page coté serveur, juste un reload d'un fragment de la page, coté client ?

    A quel endroit je me trompe ?
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  10. #10
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Visuellement, oui.

    En fait, une requête AJAX est une requête qui est envoyée au serveur en arrière plan via JavaScript. Arrivée au serveur, elle est traitée tout à fait comme une requête normale. Sauf que dans cette requête, on aura précisé la méthode (ou événement) à invoquer et ce qui sera renvoyé ne sera pas le rendu de la page, mais la valeur retournée par cette méthode qui doit donc renvoyer soit du texte brut, soit du XML.

    De retour côté client, c'est au navigateur, via javascript, à mettre à jour la page (ou la zone concernée) avec les informations retournées.
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  11. #11
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Ok, je pensais que l'appel au servuer n'était pas fait. Merci pour ces éclaircissements
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  12. #12
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Avec plaisir :-)
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  13. #13
    Invité
    Invité(e)
    Par défaut
    J'ai fait ces observations en mettant des points d'arret partout avec le debbugger et effectivement j'ai été surpris de voir des passages par page_load meme avec ajax.

    Connaissez vous des méthodes pour ne pas faire ceci ? ou est ce qu'on est obligé de passer via des webservices ?

  14. #14
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Qu'y-a-t'il de gênant à passer par ces méthodes ?
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  15. #15
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Il veut peut etre parler des perte de perf a cause des aller retour serveur... Mais bon je ne penses pas qu'on puisse faire autrement.

    [ah, si , on peut : faire un client lourd ]

    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Ben exactement, c'est un problème de perf Ce qui est bien (aussi) avec ajax c'est de ne pas avoir a recharger tout une page pour avoir notre resultat, et c'est ce qu'on fait avec les webservices : je demande ça et je ne veut que ça.

    Pour ajouter un peu au sujet (qui pourrait faire un bon tuto je pense) :

    lorsquo'n veut recuperer les cotnrole ajouté dynamiquement, il faut le faire avec la methode FinControl(id_dynamique), du controle (un panel par ex) dans lequel on a ajouté notre controle dynamique.

    Car j'ai essayé avec this.FindControl() de ma page et ca trouvait rien ^^

  17. #17
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Il y a une mauvaise interprétation d'AJAX là..

    AJAX ce n'est pas du chargement conditionnel de page... C'est une requête qui est effectuée en arrière plan. Il est tout à fait possible (même si ce n'est pas là son intérêt principal) de charger une page complète avec AJAX.

    Une requête AJAX est similaire à une requête effectuée avec un navigateur.. Bien utilisé, cela permet effectivement de ne "modifier" que certaines parties d'une page.. mais côté serveur, c'est traité exactement comme si il s'agissait d'une demande de page complète.
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  18. #18
    Invité
    Invité(e)
    Par défaut
    J'avais bien compris Mais y a t il un moyen, tout comme l'on fait lorsque on utilise httprequest directement, de dire "En cliquant sur ce bouton ca envoi une requète vers tel page" ?

    Car actuelement avec ce framework on a un updatepanel qui intercepte les demande, fait une requète (vers sa page source) et la reaffiche.Ajax perd énormément d'interet a mes yeux, on y gagne que la disparition du petit clignotement de l'écran ... pour moi l'interet d'ajax est : les perf coté serveur (pas recharger tout une page pour afficher juste "ce machin chose n'est pas valide"), et la bande passante (un chti fichier xml ca pèse moi que tut le contenu d'une page).

  19. #19
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Ce qu'il se passe lors d'une requête Ajax vers une page asp.net, c'est qu'une page Asp.net pour être valide, doit passer par une série d'événements (PreInit, Init, etc..) qui va en construire les différents contrôles (notamment) afin de les rendre accessibles (pour rappel, le web étant stateless, lorsqu'une page est envoyée au client, elle est aussitôt "oubliée" du serveur)

    Avec le Framework, l'intérêt d'Ajax n'est pas d'économiser du temps serveur, mais plus de la bande passante - En effet, lors du retour seule les informations à mettre à jour sont renvoyées et non toute la page.. même si celle-ci a été traitée côté serveur - et du confort visuel côté client.

    Cela permet d'éviter de devoir recharger toute une page lorsque seule une petite information doit être mise à jour.

    Maintenant, pour que seule une petite méthode soit invoquée suite à une action, je pense qu'il vaut mieux regarder du côté des WebServices.

    Peut-être est-il possible d'invoquer un WebService via Ajax, là je n'en sais rien, mais ça doit surement être faisable.
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  20. #20
    Invité
    Invité(e)
    Par défaut
    http://msdn.microsoft.com/msdnmag/is...lt.aspx?loc=fr

    J'ai pas tout lu, mais a mon avis y'a une partie de la réponse ici

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

Discussions similaires

  1. Ajouter + supprimer - des champs dans un formulaire
    Par tmedtcom dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/05/2012, 10h20
  2. Ajouter des champs dans un formulaire
    Par tic_tac dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/04/2011, 09h46
  3. Ajouter des champs dans un formulaire
    Par king10481 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/04/2008, 09h15
  4. Ajouter des champs dans un formulaire
    Par Luffy Duck dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/05/2006, 10h30
  5. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 15h39

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