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 :

Formulaire sur plusieurs pages


Sujet :

ASP.NET

  1. #1
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut Formulaire sur plusieurs pages
    Bonjour a vous

    J'aurais besoin de votre avis avant de me lancer dans l'implementation d'une fonctionnalite en ASP.NET.

    Cette fonction consiste en l'enregistrement de donnees dans la bdd.

    Voila en gros un petit storyboard:

    1-Page1 : l'utilisateur doit saisir des infos essentielles et choisir s'il veut proceder a un simple enregistrement ou un complet -> si c'est simple la je voudrais inserer directement les donnes dans la bdd et point barre .. si l'utilisateur selectionne la deuxieme solution (donc complete), je voudrais que l'utilisateur soit redirigee vers la deuxieme etape.

    2-Page2 : deuxieme etape ou de nouvelles infos sont demandees

    3-Page3 : troisieme etape ou des infos sont demandees en fonction des infos saisies a l'etape precedente -> ici on enregistre tout en meme temps dans la bdd

    Plusieurs questions :

    1- comment faire pour conserver les informations des formulaires d'une page a l'autre afin de pouvoir tout inserer en une fois a la fin? J'ai trouve cette page expliquant une methode: http://msdn2.microsoft.com/fr-fr/lib...fw(VS.80).aspx
    mais j'aimerais bien avoir votre avis sur la question.

    2- sur la premiere page quand l'utilisateur change de mode (du simple vers complexe) je desactive des champs du formulaire et je voudrais changer la source de donnees de mon formView ... si je ne change pas la source de donnees les controles sont bien desactivees ... par contre si je change la source de donnees la page est rechargee et la desactivation des controles ne fonctionnent pas ... une idee sur la bonne facon de proceder ?

    3- Je dois avouer que je suis un peu dans le flou ... donc j'espere que vous aurez un peu pres compris ce que je veux faire, sinon, n'hesitez pas me demander de preciser tel ou tel point

    Merci d'avance pour votre 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
    Points : 8 734
    Points
    8 734
    Par défaut
    L'asp:Wizard devrais faire ton bonheur

  3. #3
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Ca me semble pas mal du tout Je vais me pencher la dessus ! Je suppose que tu peux acceder aux donnees d'une etape a l'autre

  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
    Points : 8 734
    Points
    8 734
    Par défaut
    Tu changes pas de page en fait mais t'as bien accès aux données de tes différentes étapes sans pb

  5. #5
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Ah ca fait du bien de decouvrir des outils comme asp:wizard Merci pour cette decouverte ca m'a enleve une belle epine du pied.

    Je suis arrive a faire ce que je voulais mais je suis maintenant confronte a un petit probleme. Dans une etape de mon wizard, il y a un FileUpload. Ce type de controle ne pouvant pas conserver d'etats, j'ai mis en place ce code pour conserver le stream du fichier de l'utilisateur lorsque l'etape est desactivee: (sur l'evenement OnDeactivate)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    protected Stream InputStreamImage;
    protected int ImageLength;
     
    protected void CompleteGeneralStep(Object sender, EventArgs e)
    {
            InputStreamImage = PhotoFile.PostedFile.InputStream;
            ImageLength = PhotoFile.PostedFile.ContentLength;
            Message.Text = "complete " + ImageLength.ToString();
    }
    Jusque la pas de probleme, l'image semble bien recuperee

    Mais quand j'effectue le traitement final pour enegistrer les donnees grace a une procedure stockee, mes deux variables InputStreamImage et ImageLength ont perdu leurs valeurs...

    Voila le code que j'appelle sur l'evenement OnFinishButtonClick :

    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
     
    protected void SaveData(Object sender, WizardNavigationEventArgs e)
        {
     
            byte[] ImageData;
            Message.Text = "before test " + InputStreamImage.Length.ToString();
            if (ImageLength == 0)
                ImageData = null;
            else
            {
                byte[] ImageBinary = new byte[ImageLength];
                int InputRead = InputStreamImage.Read(ImageBinary, 0, ImageLength);
                ImageData = ImageBinary;
                ImageData = PhotoManager.ResizeImageFile(ImageData, 220);
            }
     
    .......
    Il y a forcement une raison ... mais la je vois pas du tout ... quelqu'un aurait une idee ?

    Merci d'avance

  6. #6
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    J'ai essaye de chercher des infos a ce sujet ... et j'ai rien trouve du tout

    Personne n'a une idee de la raison de ce probleme ?

  7. #7
    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
    Points : 8 734
    Points
    8 734
    Par défaut
    Qd tu cliques sur le bouton, y a un PostBack et donc une nouvelle instance de ta page est créée et tu perds tes data.

    Enregistre les en base dans le CompleteGeneralStep

  8. #8
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Ok je vois l'idee ... ca m'arrange pas vraiment mais je vais voir ce que je peux faire de ce cote la

    En tout cas, merci pour ta reponse

    J'ai une autre question concernant ce composant wizard. Dans une etape je souhaite generer un tableau de checkboxes en fonction des choix de l'utilisateur a l'etape precedente. Pour le moment, j'arrive bien a generer (ou du moins ajouter ces checkboxex) dans une div en utilisant sa propriete InnerHTML.

    Comme vous l'aurez devine ca pose un probleme car les etats de ces checkboxes ne sont pas conservees d'une etape a l'autre.

    Je pense que l'idee serait de generer ces chexboxes d'une autre maniere mais malheureusement pour le moment je vois pas d'autres manieres de faire :S

    Voila pour le moment la methode que j'utilise (qui encore une fois, j'insiste, me parait pas tout adaptee a ce que je voudrais puisque je ne pourrai pas acceder aux checkboxes au moment de mon enregistrement):

    Cette metode est appellee a l'evenement OnActivate de l'etape et Checkboxes est une div contenue dans cette etape.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     protected void ActivateChooseCheckboxes(Object sender, EventArgs e)
        {
            Checkboxes.InnerHtml = "";
            for (int i = 0; i < Convert.ToInt32(Nb_Of_Rows.Text); i++)
            {
                for (int j = 0; j < Convert.ToInt32(Nb_Of_Columns.Text); j++)
                {
                    Checkboxes.InnerHtml += "<input type='checkbox' ID='CheckBoxFinal" + i + "" + j + "' runat='server' Checked='true' />\n";
                }
                Checkboxes.InnerHtml += "<br />\n\n";
            }
        }
    Je sais que ca fait beaucoup de questions en peu de temps mais la ja patine vraiment dans la choucroute avec .NET :S

  9. #9
    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
    Points : 8 734
    Points
    8 734
    Par défaut
    Essaye pluto de créer des asp:checkbox dans ton code et des les ajouter à ton Wizard avec Ton-etape.Controls.Add(...)
    Faut remplacer Ton-etape par je sais pas quoi ^^

    Sinon, comment tu fais actuellement pour essayer de récupérer la valeur de tes check box?

  10. #10
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    OK ca parait tout de suite plus simple maintenant que tu le dis ^^ Ta methode fonctionne bien par contre faut que je vois comment mettre un peu mieux en forme ca .. si je souhaite mettre ces controles dans une div c'est possible selon toi ?

    Voila comment sont crees les checkboxs maintenant :

    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
         for (int i = 0; i < Convert.ToInt32(Nb_Of_Rows.Text); i++)
            {
                for (int j = 0; j < Convert.ToInt32(Nb_Of_Columns.Text); j++)
                {
                    CheckBox check = new CheckBox();
                    check.Checked= true;
                    check.ID = "CheckBoxFinal"+i+""+j;
                    WizardStep5.Controls.Add(check);
     
                }
                Label l = new Label();
                l.Text = "<br />";
                WizardStep5.Controls.Add(l);
     
            }
    Et voila comment je souhaiterais y acceder:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        for (int i = 0; i < Convert.ToInt32(Nb_Of_Rows.Text); i++)
            {
                for (int j = 0; j < Convert.ToInt32(Nb_Of_Columns.Text); j++)
                {
     
                    CheckBox check = (CheckBox)WizardStep5.FindControl("CheckBoxFinal" + i + "" + j);
                    Message.Text += "i->" + i + "j->" + j + " checked->" + check.Checked.ToString();
                }
            }
    Le code juste au dessus ne fonctionne pas ... je m'y prendrais mal ?

    Bon je viens de m'apercevoir que si je decoche une case et je passe a l'etape suivante puis que je reviens cette etape la case est a nouveau cochee... ce qui est assez logique puisque je regenere les cases a l'activation de l'etape .. donc faudrait que je le fasse que quand je viens de l'etape precedente ou l'utilisateur choisit le nombre de lignes et de colonnes...

  11. #11
    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
    Points : 8 734
    Points
    8 734
    Par défaut
    j'aurais fait comme toi

  12. #12
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Penses tu que lorsque la page est rechargee a la derniere etape les controles (checkboxes) que j'avais ajoute a l'etape precedente ont disparu ?

Discussions similaires

  1. Formulaire sur plusieurs pages
    Par sir_gcc dans le forum Struts 1
    Réponses: 5
    Dernier message: 09/04/2007, 21h22
  2. Formulaire sur plusieurs pages qui bloque
    Par yiuche dans le forum Langage
    Réponses: 7
    Dernier message: 03/08/2006, 09h23
  3. Formulaire sur plusieur pages ?
    Par Phenomenium dans le forum Langage
    Réponses: 15
    Dernier message: 25/01/2006, 13h52
  4. Un formulaire sur plusieurs page
    Par gophette dans le forum Langage
    Réponses: 3
    Dernier message: 18/01/2006, 08h11
  5. Formulaire sur plusieurs pages
    Par Gourouni dans le forum ASP
    Réponses: 23
    Dernier message: 09/12/2005, 10h17

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