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 :

[PostBack] Avoir le formulaire vide après postback ?


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut [PostBack] Avoir le formulaire vide après postback ?
    Bonjour à tous,

    J'ai un formulaire sur une page, et il se poste sur lui même (même page)..
    Jusque là ça va.

    Par contre, après le post back, ASP.NET me re rempli automatiquement mes champs de formulaires avec les données postées..
    Et je ne veux pas.. comment faire ??

    J'ai mis enableViewState à false à la page mais ça ne résoud pas le problème.

    D'avance merci pour toute aide

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    textbox1.text = ""
    ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    Bonjour lutefalco,

    arg, merci, j'ai essayé mais ça ne marche pas.

    Je construis mon formulaire en dynamique via des Controls.Add.
    Mon enableViewState est à false.

    Après un postBack, je reconstruis mon formulaire et je mets bien monHtmlInput.Value=null (et j'ai donc essayé "" par rapport à ton message) mais ça ne marche pas pour autant.
    Le formulaire rendu après postback, est prérempli avec les données postées..
    Pourquoi, comment? c'est là ma question.

    Bien sur je peux faire un javascript sur le onload() de la page, mais n'y a t'il pas un meilleur moyen, coté C# ?

    D'avance merci beaucoup

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    On peut avoir un bout de code?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    Aie, disons que mon code fait 1200 lignes, mais voila le résumé :

    Code C# : 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
    Page_Load(object sender, EventArgs e)
    {
     
      // SI PAS AJAX
      if (scriptManager1.AsyncPostBackSourceElementID.Length == 0)
      {
        /* construction de mon formulaire via un FormulaireBuilder qui m'ajoute mes HtmlControl à la page avec des value à null (explicitement) */
        constructionFormulaire();
     
        if (isPostBack)
        {
            /* ajout de mes données dans la bdd */
            ajoutDonnees();
        }
      }
    }


    Merci pour ton aide

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    en fait c'est constructionFormulaire qui m'intéresse

  7. #7
    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    et non même avec ViewState.Clear() en début de Page_Load() ça me les remets.. (merci quand même)

    Voici le code de mon construction formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void constructionFormulaire()
    {
      // NOM, DATE, HEURE
      formBuilder = new FormulaireBuilder(monDiv);
      formBuilder.addInputText("nom", null, "libelle", 100, null,  "libelle v", null, false);
      formBuilder.addInputText("date", null, "date", 10, null, "date v", null, false);
      formBuilder.addInputText("heure", null, "heure", 5, null, "heure v", null, false);
    }
    Sachant que formulaireBuilder est une simple classe qui me construit mes controles et les attachent à monDiv. Via Controls.Add().

    les paramètres de addInputText() sont :
    le label, le css du label, le maxchar, les attributs id et name, le value, le css du champ input, l'info bulle, et le caractère obligatoire du champ.

    Ca ne fait rien d'autre que des new HtmlInputText() en mettant les propriétés/attributs ID, "class", value etc données en paramètres..

    Si vous avez une idée de mon problème, merci..

    Je pense qu'il y a un mécanisme qui m'échappe.

  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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    tu place le clear avant le base.Onload ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    euh non, je ne fais pas appel base.OnLoad()..

    Je devrais ? je vais essayer

    (je le fais au début du Page_Load() juste..)

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    P.S. : oula, j'ai l'impression que le base.OnLoad() mis en début de Page_Load() lui fait faire une boucle infini..

    Ou bien je n'ai pas bien compris ou je dois le mettre..


    P.S. : en tout cas j'ai bien mis le Clear() avant la (re)construction du formulaire

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    Je vous mets quand même un résumé de la methode addInputText de mon FormulaireBuilder (je met pas la construction du <label>):

    Code : 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
    public void addInputText(string idname, int maxChar, string valeurInitiale, string cssClass, string title)
        {
            HtmlInputText inputText;
     
            inputText = new HtmlInputText("text");
            inputText.ID = idname;
            inputText.Name = idname;
            if (maxChar != -1)
            {
                inputText.MaxLength = maxChar;
            }
            inputText.Attributes["class"] = cssClass;
            inputText.Attributes["title"] = title;
            inputText.Value = valeurInitiale; 
     
            monDiv.Controls.Add(inputText);
        }

  13. #13
    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    tu hérite bien d'une classe de page ? je veux dire, ton Page_Load est bien une méthode "override" ? Si non, alors la boucle infinie est normale. Si oui, alors la boucle ne devrait pas arriver, car base.OnLoad appelle le OnLoad de la page mère.

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Suffit de regarder l'ordre des événements dans une page Web.
    Le chargement des controles à partir des valeurs du ViewState intervient avant le OnLoad donc mettre un ViewState.Clear dans le OnLoad sert à rien ici

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    En imaginant que tu fasses ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formBuilder.addInputText("nom", null, "libelle", 100, null,  "libelle v", null, false);
    Je ferais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HtmlInputText inputText = (HtmlInputText) This.FindControl("nom");
    inputText.value = "";

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    hed62,

    oui, enfin mon Page_Load() est celui de base généré par Visual Studio quand je fais un nouveau WebForm..

    Donc il se déclenche selon le système interne de ASP.NET.

    Ma page hérite bien de System.Web.UI.Page..

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    hed62 :
    tu mets des ovverride sur tes Page_Load() toi ?

    lutecefalco :
    pas bête, mais ça n'a pas marché..
    Je vais essayé dans le Page_PreRender..

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par dymezac Voir le message
    hed62 :
    tu mets des ovverride sur tes Page_Load() toi ?

    lutecefalco :
    pas bête, mais ça n'a pas marché..
    Je vais essayé dans le Page_PreRender..
    Vérifie bien que le This.FindControl("nom") retourne quelquechose.
    Il faut peut être descendre plus bas, genre This.Form.FindControl("nom") ou autre. Je suis pas sûr

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    OK,

    merci lutecefalco..

    En mettant ton code dans le Page_PreRender, ça marche..

    Mais il y a un mecanisme que je ne connais pas apparamment..

    D'abord, on a parlé de viewstate, mais à savoir qu'il est à false sur ma page !

    -> Ensuite, qu'est ce qui fait que mes controles sont re-remplis par asp.net ?
    -> comment puis je désactiver ce fait ? Suis je obligé de le faire dans le Page_PreRender à chaque fois..
    -> Qu'est ce qu'il se passe entre le Page_Load() et le Page_PreRender() pour que je puisse enfin mettre à vide mes controls ? C'est cette chose que je ne veux pas..

    Merci ..

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Vérifie bien que le This.FindControl("nom") retourne quelquechose.
    Il faut peut être descendre plus bas, genre This.Form.FindControl("nom") ou autre. Je suis pas sûr
    Non ça marche bien avec this.FindControl()..
    Le inputText est trouvé mais à vide.. normal car je le met à vide moi même avec mon formBuilder.addInputText() dans le PageLoad() et qu'on y est toujours.

    Par contre entre le Page_Load() et le Page_PreRender() il y a quelque chose qui se passe, qui me remet la valeur postée dedans.. alors que j'ai le viewstate à false en +

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Pourquoi ma liste se vide après un postback ?
    Par nath-0-0 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/05/2012, 21h37
  2. [AC-2003] Formulaire vide après changement de base
    Par Piou2fois dans le forum Projets ADP
    Réponses: 0
    Dernier message: 12/04/2012, 09h48
  3. Comment avoir un formulaire vide automatiquement?
    Par Laure041 dans le forum IHM
    Réponses: 14
    Dernier message: 10/04/2008, 16h06
  4. Avoir un formulaire vide à l'affichage
    Par moilou2 dans le forum VBA Access
    Réponses: 9
    Dernier message: 22/02/2008, 11h19
  5. Eviter d'avoir un formulaire vide!
    Par bok2000 dans le forum IHM
    Réponses: 5
    Dernier message: 29/10/2007, 15h49

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