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 :

Recup infos depuis formulaire dynamique


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut Recup infos depuis formulaire dynamique
    Bonjour,

    Pour un projet, je créé un formulaire dynamiquement afin de pouvoir modifier des infos en base.
    Je fais donc ma requête, créé dynamiquement les champs qui vont bien (soit TextBox, soit DropDownList) et je les remplis avec la valeur donnée en base.
    Puis, j'ajoute un bouton "Valider" (toujours en code behind)

    Mon problème : je n'arrive pas a récupérer les valeur saisies sur la page.

    Si j'arrive bien a "relire" mes contrôles, je n'en ai que la valeur générée au départ, mais si par exemple j'ai modifié un texte, je ne le récupère pas la nouvelle valeur.

    J'ai essayé mon code dans une fonction liée à l'évènement "onClick" du bouton. J'ai essayé depuis un test "if (IsPostBack)" dans la fonction Page_Load, dans tous les cas, je n'ai que les valeurs générées. Comment peut-on lire les valeurs saisies par un utilisateur sur un TextBox généré dynamiquement ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    As tu bien construit un formulaire (form) autour de tes controles ?
    Si oui, ses parametres sont-ils bons ? (méthode, url...)
    Regardes coté code source de ta page html une fois générée et affichée pour voir si le html généré est correct.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Oui oui, tout ca est bien fait.
    Mais ta suggestion de regarder le code généré m'a bien aidé : je me suis rendu compte que mes contrôles étaient dans un PlaceHolder (puisque j'utilise une MasterPage).
    Je dois donc récupérer mon PlaceHolder avec un FindControl, PUIS, rechercher mes contrôles avec un deuxième FindControl depuis l'objet PlaceHolder.

    Merci de ta réponse.

  4. #4
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Lors de l'utilisation de contrôles dynamiques il faut veiller au fait qu'il doivent être recréés à l'identique à chaque chargement de la page et qu'ils doivent l'être avant le rechargement du ViewState et le Load des contrôles.

    L'idéal est la méthode OnInit.

    Tu ne dois également charger les valeurs par défaut lors du Init (Tu pourras même te reposer sur le viewstate lors des postback), comme cela, lors des PostBack, ce sont les valeurs modifiées qui écrasent les valeurs par défaut.

    Si ce n'est pas le cas, c'est normal que les contrôles prennent les valeurs que tu leur fourni et pas celles modifiées.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    PongTen, as-tu un tuto clair sur l'utilisation du viewState ? Ca m'aurais bien aidé sur ce coup-là (je me suis débrouillé autrement) mais je sens que ca pourra etre utile dans l'avenir.

    Merci d'avance.

    Sinon, tu préconise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    OnInit(){
       // Creation des controles
    }
     
    Page_Load(){
       if ( isPostBack )
          // Traitement d'evenements
       else
          // Remplissage des controles
    }

  6. #6
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Je te conseille plutôt de lire l'article de Nico-Pyright sur la création et le cycle de vie des contrôles en ASP.NET.

    Le viewstate en lui même n'est pas compliqué. Tu peux le voir comme un objet dans lequel tu peux stocker des informations qui transiteront avec la page ajoutant une notion "d'état" au page ASP.NET.

    Ainsi, pour ajouter quelque chose au viewstate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Page.ViewState.Add("Macle", valeur); //valeur doit être sérialisable
    Et pour lire le contenu du ViewState :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mavaleur = (TypedeMaValeur)ViewState["Macle"];
    2 choses auxquelles faire attention :


    1. Plus on stocke d'information dans le viewstate, plus sa taille augmente (logique), mais comme il est sérialisé pour transiter avec la page, c'est toute la page qui se trouve alourdie.
    2. On ne peut accéder au contenu du ViewState qu'après qu'il ait été chargé (logique aussi), donc après l'événement "LoadViewState()" qui survient entre le "Init" et le "Load" et la sauvegarde du ViewState se fait dans l'événement "SaveViewState" qui survient entre les événement "PreRender" et "Render"

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Merci de ces précisions, je vais potasser tout ca

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

Discussions similaires

  1. [MySQL] [mysql] Comment bien stocker les infos d'un formulaire dynamique ?
    Par padjoy dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/11/2010, 19h28
  2. Repeater + Formulaire (recup infos) = Javascript ?
    Par jiryaia dans le forum ASP.NET
    Réponses: 28
    Dernier message: 25/03/2010, 20h43
  3. [AC-2000] Graphique dynamique depuis formulaire
    Par Flo90 dans le forum IHM
    Réponses: 4
    Dernier message: 12/05/2009, 09h02
  4. [MySQL] recup d'info dans formulaire
    Par yayacameleon dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/11/2005, 10h36
  5. Réponses: 6
    Dernier message: 04/01/2004, 20h59

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