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 :

[VB.Net] 3 checkbox dans un repeater


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut [VB.Net] 3 checkbox dans un repeater
    Hello,

    j'affiche un tableau de droits au moyen d'un repeater

    pour chaque ligne, on a le nom d'un objet puis 3 checkbox qui indique chacune un droit différent

    Comment faire pour savoir quel checkbox sur quel ligne a été modifiée ?

    Merci !

  2. #2
    Membre régulier Avatar de boleduch
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 124
    Points
    124
    Par défaut
    Hello,

    Tu peux essayer de mettre un OnItemCommand dans ton repeater. Ca marche pour un click sur un boutton, mais je suis pas certain que ca ira pour des CheckBox.

    Sinon, faire qqch dans le style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    foreach ( RepeaterItem Item in TonRepeater.Items )
    {
     
       if ( ((CheckBox)Item.FindControl("IDCheckBox")).Checked )
       {
     
           // Action lorsque ta CheckBox "checké"
     
       }
     
     
     
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    Evectivement dans la fonction ItemCommand du repeater, mais moi je ferais:

    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
     
        Private Sub tonRepeater_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles tonRepeater.ItemCommand
     
            Dim chb As CheckBox 
     
            chb = CType(e.CommandSource, CheckBox )
     
            Select Case chb.ID
                Case "IDCheckBox1"
                    'traitement CheckBox1
                Case "IDCheckBox2"
                    'traitement CheckBox3
                Case "IDCheckBox3"
                     'traitement CheckBox2
            End Select

  4. #4
    Membre régulier Avatar de boleduch
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 124
    Points
    124
    Par défaut
    Oui en fait la 2ème méthode c'était au cas ou le OnItemCommand ne marchait pas sur des CheckBox, et qu'après avoir fait un choix l'utilisateur cliquait sur un bouton ( en dehors du Repeater ), et c'est dans l'événement click du bouton qu'on aurait fait le foreach.

    C'était peut-être pas très clair....

  5. #5
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Ok, ya qqchose particulier à faire sur le repeater ou sur les checkbox ?

    j'ai bien le postback=true sur mes checkbox mais le RepeaterDroitsUtil_ItemCommand n'est pas exécuté...

    Merci de votre aide

  6. #6
    Membre régulier Avatar de boleduch
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 124
    Points
    124
    Par défaut
    Ton Repeater ressemble à ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:repeater id="rePanier" runat="server" enableviewstate="true" onitemcommand="rePanier_ItemCommand">

  7. #7
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Mon repeater :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Repeater ID="RepeaterDroitsUtil" runat="server" enableviewstate="true" OnItemCommand="RepeaterDroitsUtil_ItemCommand">
    il y un item et alternateitem

    Une Checkbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:CheckBox ID="CheckBoxConsult" runat="server" Checked="true" AutoPostBack="true" />
    dans le code behind :
    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 Sub RepeaterDroitsUtil_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles RepeaterDroitsUtil.ItemCommand
            Dim message As String = "RepeaterDroitsUtil_ItemCommand"
            Response.Write("<body><script>alert(""" & message & """);</script></body>")
     
     
            Dim chb As CheckBox
     
            chb = CType(e.CommandSource, CheckBox)
     
            Select Case chb.ID
                Case "IDCheckBox1"
                    'traitement CheckBox1 
                Case "IDCheckBox2"
                    'traitement CheckBox3 
                Case "IDCheckBox3"
                    'traitement CheckBox2 
            End Select
    merci de ton aide

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    Effectivement çà marche pas avec une chekbox.

  9. #9
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    comment faire alors ?

  10. #10
    Membre régulier Avatar de boleduch
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 124
    Points
    124
    Par défaut
    Moi je mettrais un bouton et dans l'événement Clik le code que je t'avais donné avant avec la boucle foreach.

  11. #11
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    oui mais le problème, c'est que je peut avoir 60 lignes et qu'à ce moment là c'est pas génial niveau execution.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    Une solution en C# (je te laisse traduire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                <asp:Repeater id="Repeater1" runat="server">
                    <ItemTemplate>
                        <asp:CheckBox AutoPostBack=True ID="cb" Runat=server Checked='<%#(bool) (Container.DataItem) %>'>
                        </asp:CheckBox>
                        <br>
                    </ItemTemplate>
                </asp:Repeater>
    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
     
    		private void Page_Load(object sender, System.EventArgs e)
    		{
                if (!Page.IsPostBack)
                {
                    bool []b = {true,false,true};
                    Repeater1.DataSource = b;
                    Repeater1.DataBind();
                }           
    		}
     
    		private void InitializeComponent()
    		{    
                this.Repeater1.ItemCreated += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemCreated);
                this.Load += new System.EventHandler(this.Page_Load);
     
            }
            private void Repeater1_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
            {
                CheckBox cb;
                cb = (CheckBox)e.Item.FindControl("cb");
                cb.CheckedChanged +=new EventHandler(cb_CheckedChanged);
            }
     
     
            private void cb_CheckedChanged(object sender, EventArgs e)
            {
                CheckBox cb=(CheckBox)sender;
                if(cb.Checked)
                {
                    this.Response.Write("Checked&nbsp;"+cb.ClientID+"<br>");
                }
                else
                {
                    this.Response.Write("Unchecked&nbsp;"+cb.ClientID+"<br>");
                }
            }
    çà marche

    P.S.: inspiré un truc trouvé avec google, mais j'ai perdu le lien.. Testé et approuvé

  13. #13
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Je suis désolé, mais ça marche pas...

    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
    <%@ Page Language="C#" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
     
    <script runat="server">
    private void Page_Load(object sender, System.EventArgs e) 
          { 
                if (!Page.IsPostBack) 
                { 
                    bool []b = {true,false,true}; 
                    Repeater1.DataSource = b; 
                    Repeater1.DataBind(); 
                }            
          } 
     
          private void InitializeComponent() 
          {    
                this.Repeater1.ItemCreated += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemCreated); 
                this.Load += new System.EventHandler(this.Page_Load); 
     
            } 
            private void Repeater1_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 
            { 
                CheckBox cb; 
                cb = (CheckBox)e.Item.FindControl("cb"); 
                cb.CheckedChanged +=new EventHandler(cb_CheckedChanged); 
            } 
     
     
            private void cb_CheckedChanged(object sender, EventArgs e) 
            { 
                CheckBox cb=(CheckBox)sender; 
                if(cb.Checked) 
                { 
                    this.Response.Write("Checked&nbsp;"+cb.ClientID+"<br>"); 
                } 
                else 
                { 
                    this.Response.Write("Unchecked&nbsp;"+cb.ClientID+"<br>"); 
                } 
            } 
     
    </script>
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Repeater id="Repeater1" runat="server"> 
                    <ItemTemplate> 
                        <asp:CheckBox AutoPostBack=True ID="cb" Runat=server Checked='<%#(bool) (Container.DataItem) %>'> 
                        </asp:CheckBox> 
                        <br> 
                    </ItemTemplate> 
                </asp:Repeater> 
        </div>
        </form>
    </body>
    </html>
    je dois avoir un truc qui va pas mais en c# je vois rien.

    Merci de ton aide

  14. #14
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    J'ai trouvé un truc qui marche nickel, qui fait pas une boucle et qui marche avec plusieurs CheckBox

    dans le repeater, la CheckBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:CheckBox ID="CheckBoxConsult" runat="server" Checked="true" OnCheckedChanged="Checkbox_Clic" AutoPostBack="true" />
    dans le code-behind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Protected Sub Checkbox_Clic(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim cbk As CheckBox = CType(sender, CheckBox)
            Dim dgItem As RepeaterItem = CType(cbk.NamingContainer, RepeaterItem)
            Response.Write("<body><script>alert(""" & dgItem.ItemIndex.ToString() & cbk.ID.ToString & cbk.Checked & """);</script></body>")
        End Sub
    c'est tout ! c'est pas beau quand c'est tout simple !

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    Moir je t'ai donnée la même chose mais en code behind, sauf que moi j'avais essayé ton truc et çà marchait pas (j'ai du faire çà trop vite).

    Pense au [Résolu]

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

Discussions similaires

  1. [VB.NET] Colonne checkbox dans un gridview
    Par Bz dans le forum Windows Forms
    Réponses: 0
    Dernier message: 20/07/2012, 09h50
  2. Réponses: 4
    Dernier message: 08/05/2007, 09h40
  3. [VB.NET] Affichage conditionnel dans un repeater
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/02/2005, 12h58
  4. [VB.Net]Evenement dans un Repeater !!
    Par m-mas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/09/2004, 17h13
  5. [VB.NET] Insérer une colonne de CheckBox dans un DataGrid
    Par Manue.35 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2003, 11h44

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