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 :

Radiobutton et repeater


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 36
    Points
    36
    Par défaut Radiobutton et repeater
    Bonjour à tous,

    Je dois réaliser un formulaire sur l'évaluation des risques professionnels.
    Ma page contient un repeater avec le nom du risque, un tableau de radiobuttons pour choisir la fréquence d'exposition à ce risque et le lien vers la document officielle.
    Voici à quoi ressemble ma page :Nom : image.JPG
Affichages : 275
Taille : 35,0 Ko

    Mes radiobuttons sont en asp avec un ID du genre rb1 car chaque radiobutton représente une valeur. Ces radiobuttons sont contenu dans un groupname.
    On ne peut choisir qu'un radiobutton dans ce tableau.
    Lorsque je valide mon formulaire, j'aimerais récupérer l'ID du radiobutton qui a été sélectionné dans le tableau.

    Le problème est que je ne vois pas trop comment faire pour récupérer simplement l'ID sélectionné.
    Je pensais à déclarer chaque radiobutton dans mon code-behind quand je parcours les éléments contenu dans mon repeater, mais cela est un peu fastidieux vu que j'ai 16 radiobuttons.

    Pouvez-vous m'aider ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 36
    Points
    36
    Par défaut
    Voilà une solution qui marche mais je ne la trouve pas terrible :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
      Protected Sub btnValider_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnValider.Click
            Dim rb1, rb2, rb3, rb4, rb5, rb6, rb7, rb8, rb9, rb10, rb11, rb12, rb13, rb14, rb15, rb16 As RadioButton
            Dim lblIdRisque As Label
            Dim nbFrequence As Integer
     
            For Each item As RepeaterItem In rpDetailsRisques.Items
                rb1 = item.FindControl("rb1")
                rb2 = item.FindControl("rb2")
                rb3 = item.FindControl("rb3")
                rb4 = item.FindControl("rb4")
                rb5 = item.FindControl("rb5")
                rb6 = item.FindControl("rb6")
                rb7 = item.FindControl("rb7")
                rb8 = item.FindControl("rb8")
                rb9 = item.FindControl("rb9")
                rb10 = item.FindControl("rb10")
                rb11 = item.FindControl("rb11")
                rb12 = item.FindControl("rb12")
                rb13 = item.FindControl("rb13")
                rb14 = item.FindControl("rb14")
                rb15 = item.FindControl("rb15")
                rb16 = item.FindControl("rb16")
     
                lblIdRisque = item.FindControl("lblIdRisque")
     
                If rb1.Checked Then
                    nbFrequence = rb1.ID.Substring(2)
                ElseIf rb2.Checked Then
                    nbFrequence = rb2.ID.Substring(2)
                ElseIf rb3.Checked Then
                    nbFrequence = rb3.ID.Substring(2)
                ElseIf rb4.Checked Then
                    nbFrequence = rb4.ID.Substring(2)
                ElseIf rb5.Checked Then
                    nbFrequence = rb5.ID.Substring(2)
                ElseIf rb6.Checked Then
                    nbFrequence = rb6.ID.Substring(2)
                ElseIf rb7.Checked Then
                    nbFrequence = rb7.ID.Substring(2)
                ElseIf rb8.Checked Then
                    nbFrequence = rb8.ID.Substring(2)
                ElseIf rb9.Checked Then
                    nbFrequence = rb9.ID.Substring(2)
                ElseIf rb10.Checked Then
                    nbFrequence = rb10.ID.Substring(2)
                ElseIf rb11.Checked Then
                    nbFrequence = rb11.ID.Substring(2)
                ElseIf rb12.Checked Then
                    nbFrequence = rb12.ID.Substring(2)
                ElseIf rb13.Checked Then
                    nbFrequence = rb13.ID.Substring(2)
                ElseIf rb14.Checked Then
                    nbFrequence = rb14.ID.Substring(2)
                ElseIf rb15.Checked Then
                    nbFrequence = rb15.ID.Substring(2)
                ElseIf rb16.Checked Then
                    nbFrequence = rb16.ID.Substring(2)
                End If
     
                If mesMethodesEvaluations.ajouterFrequenceRisqueEvaluation(Session("idEvaluation").ToString, lblIdRisque.Text, nbFrequence) = True Then
                    'On passe à la suite
                Else
                    System.Diagnostics.Debug.Print("Erreur lors de l'ajout d'une fréquence de risque pour l'évaluation")
                End If
            Next
            Server.Transfer("EvaluationCible.aspx")
        End Sub
    Si vous avez des idées pour l'optimiser un peu plus, n'hésitez pas

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Ton formulaire est'il juste un formulaire "Question" (sous entendu, que tu n'auras pas à le réafficher avec les réponses de l'utilisateur) ?

    Si c'est le cas, pourquoi ne pas utiliser Javascript ?
    A chaque sélection d'un RadioButton, tu mets l'ID dans un HiddenField (1 HiddenField par ligne) et lors du PostBack, tu récupères tous les IDs.


    Seb

  4. #4
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Si j'ai bien compris il ne peux y avoir qu'une Checkbox de checkée (else if) et tu connais le nombre de RadioButton.


    Ma technique est de boucler sur le nombre de checkbox(for). Dès que j'ai trouvé celle checkée(Checked) j'attribut la valeur à ma variable(nbFrequence) et j’arrête de boucler(break.
    J'ai pas de repeater et c'est en C# mais ce n'est pas compliqué et facilement traduisible en VB (mais je suis un peu alérgique...) :
    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 btTestRb_Click(object sender, EventArgs e)
            {
                int nbFrequence = 0;
     
                for (int i = 1; i <= 9 ; i++)
                {
     
                    var radioButton = this.Master.FindControl("MainContent").FindControl(string.Format("{0}{1}", "rb",i)) as RadioButton;
                    if (radioButton.Checked)
                    {
                        nbFrequence = Convert.ToInt32(radioButton.ID.Substring(2));
                        break;
                    }
                }
                //Suite de ton code
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="false" CodeBehind="Test.aspx.cs" Inherits="AppliTest.WebForm.Test" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <asp:RadioButton runat="server" ID="rb1" Text="rb1" />
            <asp:RadioButton runat="server" ID="rb2" Text="rb2" />
            <asp:RadioButton runat="server" ID="rb3" Text="rb3" />
            <asp:RadioButton runat="server" ID="rb4" Text="rb4" />
            <asp:RadioButton runat="server" ID="rb5" Text="rb5" />
            <asp:RadioButton runat="server" ID="rb6" Text="rb6" />
            <asp:RadioButton runat="server" ID="rb7" Text="rb7" />
            <asp:RadioButton runat="server" ID="rb8" Text="rb8" />
            <asp:RadioButton runat="server" ID="rb9" Text="rb9" />
            <asp:Button runat="server" ID="btTestRb" Text="Valider" OnClick="btTestRb_Click" />
    </asp:Content>

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    Yinyang, mon formulaire n'est pas du type "question" car il doit pouvoir ré-afficher les données saisies par l'utilisateur.
    Katkiller merci pour ta solution, c'est ce dont j'avais besoin.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/07/2004, 11h05
  2. [C#] Déclencher action dans Repeater avec LinkButton
    Par globeriding dans le forum ASP.NET
    Réponses: 13
    Dernier message: 13/05/2004, 15h29
  3. Radiobutton
    Par raf_gug dans le forum MFC
    Réponses: 3
    Dernier message: 08/04/2004, 09h46
  4. [JSP]RadioButton
    Par orisis dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/04/2004, 12h45
  5. RadioButton
    Par Angeva dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/02/2004, 11h21

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