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 :

Initialisation d'un formulaire


Sujet :

ASP.NET

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 89
    Par défaut Initialisation d'un formulaire
    Bonjour a tous, je reviens vous casser les yeux avec mon probleme de sondage.

    Donc voila j'ai un gridview qui contient un formulaire a savoir un tableau composé de :
    • Id de la question
    • Theme de la question
    • Libelle de la question
    • un radio bouton non repondu (caché)
    • un radio bouton oui
    • un radio bouton non


    les données concernant la question sont chargées depuis la table Question.

    Je stocke dans une table reponse l'Id de la reponse, l'Id de la question, le code utilisateur et la reponse de l'utilisateur.

    J'arrive a creer un sondage vierge, a sauvegarder mes votes.

    Mon Probleme : je voudrais que lorsque l'utilisateur revient sur la page, le formulaire soit pre-rempli avec ses votes precedents... (je sais quand c'est lui puisque je dispose de session["strIdUtilisateur"]...

    Mon probleme est vraiment juste centre sur le fait d'initialiser le gridview gvQuestion depuis les 2 tables... Ah oui je suis en ASP.NET 2.0 (visual studio 2005) avec C# et mes utilisateurs ont tous IE 6... (defense de rire!!)

    Pouvez vous m'aider? Merci!

  2. #2
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Bonsoir,
    Ça dépend du comment tu établit la liaison entre ton griView et les données. Si tu utilises des controles data source, tu dois refaire le binding (gridview.DataSource et gridview.Databind()); Sans plus d'info (code) ,difficile de t'aider plus.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 89
    Par défaut
    Tout se passe dans le code behind

    je teste si l'utilise a déjà répondu :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    protected int verificationUtilisateur()
        {
            int verif=0;
            Reponse reponse = new Reponse();
            DataSet dtsReponseUser = reponse.ListerUtilisateur(Session["IdUtilisateur"].ToString(), strPage);
            if (dtsReponseUser.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < dtsReponseUser.Tables[0].Rows.Count; i++)
                {
                    int user;
                    user=Convert.ToInt32(dtsReponseUser.Tables[0].Rows[i][0].ToString());
                    int formul;
                    formul = Convert.ToInt32(dtsReponseUser.Tables[0].Rows[i][1].ToString());
                    //lblTest.Text = user.ToString();
                    if ((user == Convert.ToInt32(Session["IdUtilisateur"].ToString())) && (formul==1))
                    {
                        verif = 1;
                    }
                    else verif = 0;
                }
            }
            else
                verif = 0;
            return verif;
        }
    Dans le page_load:
    si il a deja repondu alors on initialise le formulaire a vide, sinon on appelle une fonction d'initialisation:
    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
    18
    19
    20
    21
    22
     int a=0;
                a = verificationUtilisateur();
                lblTest.Text = a.ToString();
                if (!IsPostBack)
                {
                    if (a == 0)
                    {
                        lblTitrePage.Text = "Vous n'avez pas encore particip  ce sondage";
                        // Rcupration de toutes les questions et liaison avec le DataGrid
                        Question question = new Question();
                        DataSet dtsQuestion = question.ListerQuestion(Session["IdUtilisateur"].ToString(), strPage);
                        DataTable dttQuestion = dtsQuestion.Tables[0];
                        DataView dtvQuestion = new DataView(dttQuestion);
                        gvQuestion.DataSource = dtvQuestion;
                        gvQuestion.DataBind();
                    }
                    else
                    {
     
                        // Rcupration de toutes les questions et liaison avec le DataGrid
                        FillFields();
                    }
    Quand on valide le formulaire, on enregistre les données : (marche pas bien car je voudrais purger la Bdd contenant les données de vote de l'utilisateur sur ce formulaire mais en court de reparation)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    protected void btnValider_click(object sender, EventArgs e)
        {
            Reponse reponse = new Reponse();
            DataSet dtsReponseUser = reponse.ListerUtilisateur(Session["IdUtilisateur"].ToString(), strPage);
            if (dtsReponseUser.Tables[0].Rows.Count > 0)
            {
                //Si l'utilisateur a deja repondu au sondage, on supprime ses anciennes reponses
                int b;
                b = verificationUtilisateur();
                if (b != 0)
                {
                    reponse.iFormulaire = 1;
                    if (reponse.SupprimerAllReponseUser(Session["IdUtilisateur"].ToString(), strPage) == 0)
                        Response.Redirect(Application["pageProblemeBD"].ToString(), false);
                }
            }
     
            foreach (GridViewRow rowQuestion in gvQuestion.Rows)
            {
                int Formul = 1;
                string strIdQuestion = ((Label)rowQuestion.FindControl("lblId")).Text;
                RadioButton rbOui = (RadioButton)rowQuestion.FindControl("rbReponseOui");
                RadioButton rbNon = (RadioButton)rowQuestion.FindControl("rbReponseNon");
                            reponse.iFormulaire = Formul;
                reponse.iUtilisateur = Convert.ToInt32(Session["IdUtilisateur"].ToString());
                reponse.strQuestion = strIdQuestion;
                if (rbOui.Checked)
                    reponse.strReponseUtilisateur = "Oui";
                else if (rbNon.Checked)
                    reponse.strReponseUtilisateur = "Non";
                else
                    reponse.strReponseUtilisateur = "Non Repondu";
     
                if (Request.QueryString["id"] == null)
                {
                    if (reponse.AjouterReponse(Session["IdUtilisateur"].ToString(), strPage) == 0)
                        Response.Redirect(Application["pageProblemeBD"].ToString(), false);
                }
                else
                {
                    if (reponse.ModifierReponse(Session["IdUtilisateur"].ToString(), strPage) == 0)
                        Response.Redirect(Application["pageProblemeBD"].ToString(), false);
                }
            }
    Cette fonction réinitiliase le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected void btnEffacer_click(object sender, EventArgs e)
        {
            for (int i = 0; i < gvQuestion.Rows.Count; i++)
            {
                GridViewRow gvRow = gvQuestion.Rows[i];
                RadioButton rbNonRepondu = (RadioButton)gvRow.FindControl("rbNonRepondu");
                RadioButton rbOui = (RadioButton)gvRow.FindControl("rbReponseOui");
                RadioButton rbNon = (RadioButton)gvRow.FindControl("rbReponseNon");
                rbNonRepondu.Checked = true;
                rbOui.Checked = false;
                rbNon.Checked = false;
            }
        }
    Ces deux fonctions j'ai pas compric comment m'en servir (elles servent au gridview:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    protected void gvQuestion_DataBound(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvQuestion.Rows.Count; i++)
                {
                    GridViewRow gvRow = gvQuestion.Rows[i];
     
                    Label lblId = (Label)gvRow.FindControl("lblId");
                    string strId = lblId.Text;
                    Label lblTheme = (Label)gvRow.FindControl("lblTheme");
                    Label lblQuestion = (Label)gvRow.FindControl("lblQuestion");
                    if (strId.Equals("w00"))
                    {
                        lblQuestion.CssClass = "sondageprincipal";
                    }
                    else if (strId.Equals("e00"))
                        lblQuestion.CssClass = "sondageprincipal";
                    else if (strId.Equals("p00"))
                        lblQuestion.CssClass = "sondageprincipal"; 
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.HandleError(ex, Session["IdUtilisateur"].ToString());
                Response.Redirect(Application["pageProblemeApplication"].ToString() + "?messageErreur=" + ex.Message, false);
            }
        }
     
        protected void gvQuestion_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                 //rien
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.HandleError(ex, Session["IdUtilisateur"].ToString());
                Response.Redirect(Application["pageProblemeApplication"].ToString() + "?messageErreur=" + ex.Message, false);
            }
        }

  4. #4
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Mon Probleme : je voudrais que lorsque l'utilisateur revient sur la page, le formulaire soit pre-rempli avec ses votes precedents... (je sais quand c'est lui puisque je dispose de session["strIdUtilisateur"]...

    Mon probleme est vraiment juste centre sur le fait d'initialiser le gridview gvQuestion depuis les 2 tables
    Que contient le DataSet dtsQuestion . Normalement avec ceci, tu peux aussi peupler le gridview par les données de ses votes précédentes. Comment tu stock la valeur du RadioButton dans la base? Est ce que la valeur qui a été stocké dans la base te permet d'avoir directement le RadioButton coché une fois sur le gridview, sinon il faut utiliser le gestionnaire d’événement OnRowDataBound .

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 89
    Par défaut
    Citation Envoyé par Ramajb Voir le message
    Que contient le DataSet dtsQuestion . Normalement avec ceci, tu peux aussi peupler le gridview par les données de ses votes précédentes. Comment tu stock la valeur du RadioButton dans la base? Est ce que la valeur qui a été stocké dans la base te permet d'avoir directement le RadioButton coché une fois sur le gridview, sinon il faut utiliser le gestionnaire d’événement OnRowDataBound .
    Que contient dtsQuestion
    Le dtsQuestion contient les valeurs retournees par la procedure SQL sur la base Oracle qui interroge la table Question. ListerQuestion (à savoir : pour un formulaire donné, je récupère l'Id de la question, son thème et son libellé)

    Comment tu stockes la valeur du radiobutton
    J'ai une table Reponse qui contient l'Id de la reponse, le numero de l'utilisateur, le code du formulaire, le code de la question et sa reponse ("oui", "non", ou "non repondu"). Quand je sauvegarde la reponse, je regarde la valeur du bouton checked et j'écrit la reponse en base. Par exemple si rboui.Checked=true alors reponse.ReponseUtilisateur="oui"...

    gestionnaire OnRowDataBound
    je sais pas m'en servir.

    je debute en asp.net et je reprends le code d'un projet existant... Merci de ton aide

Discussions similaires

  1. Initialisation d'un formulaire
    Par georgesasc dans le forum IHM
    Réponses: 2
    Dernier message: 05/07/2010, 14h29
  2. [ZF 1.10] Initialiser Valeur Champ Formulaire
    Par Flamenco dans le forum Zend_Form
    Réponses: 8
    Dernier message: 01/04/2010, 11h36
  3. Initialisation d'un formulaire
    Par chris78 dans le forum Struts 1
    Réponses: 21
    Dernier message: 28/04/2009, 19h16
  4. Méthode d'Initialisation d'un formulaire
    Par saziley dans le forum Struts 2
    Réponses: 2
    Dernier message: 30/03/2009, 17h48
  5. Initialisation variable dans formulaire
    Par yagrasdemonde dans le forum Langage
    Réponses: 4
    Dernier message: 05/12/2008, 20h41

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