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

VB.NET Discussion :

[VBNET] Parcours datagrid avec case à cocher


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut [VBNET] Parcours datagrid avec case à cocher
    Bonjour,

    Je suis sous visual studio 2005 express, je fais une application en vbnet avec une base de données access.

    J'ai un Datagrid qui a deux colonnes la premiére c'est des case à cocher et la deuxieme c'est un champ d'une table.

    L'utilisateur peut ajouter des lignes, et peur cocher n'importe qu'elle ligne.

    Quand il valide, je voudrais insérer dans une table les champs des lignes qui on été cochées meme pour les nouvelles lignes que l'utilisateur a pu rajouter.

    J'ai fais ça :
    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
     
    Private Sub Valider_Click(ByVal se.....
     
    Dim DTAVMaj As New DataView
            Dim DTARV As DataRowView
            command.Connection.Open()
            DTAVMaj.Table = DTable
            DTAVMaj.RowStateFilter = DataViewRowState.Added Or DataViewRowState.ModifiedCurrent 'DataViewRowState.Deleted Or DataViewRowState.ModifiedCurrent Or 
            For Each DTARV In DTAVMaj 
     
                Select Case DTARV.Row.RowState
                    Case DataRowState.Added
                        command.CommandText() = "INSERT INTO Niveaux (Nom)" _
                        & " VALUES ('" & DTARV.Row.Item("Nom") & "')"
                        command.ExecuteNonQuery()
                        If DTARV.Row.Item(0).ToString = "true" Then
                            MsgBox(DTARV.Row.Item("Nom") & "je suis cochée")
                        End If
                    Case DataRowState.Modified
                        command.CommandText() = "INSERT INTO Niveaux (Nom)" _
                        & " VALUES ('" & DTARV.Row.Item("Nom") & "')"
                        command.ExecuteNonQuery()
                        If DTARV.Row.Item(0).ToString = "true" Then
                            MsgBox(DTARV.Row.Item("Nom") & "je suis cochée")
                        End If
                End Select
            Next
    Le pb est que ça ne marche pas : le if ne se déclenche pas. J'ai essayé le cas d'une ligne modifié pensant que coché une case modifie une ligne mais non plus.

    Je pense que ma démarche n'est pas la bonne il faudrait parcourir le datagrid ligne par ligne, si la case est cochée alors insérer le champ dans une table, alors que là j'avance par état de la ligne (ajoutée, modifiée)...

    Si quelqu'un a une idée je suis preneuse,

    merci beaucoup

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Par défaut
    y a un truc que je pige pas
    ta boucle tu la fais sur le dataview, donc sur les données en base ... ok ?

    tu dois plutot parcourir l'arborescence des controles de ton datagrid par exemple comme ca ci dessous
    quand tu cliques sur un bouton qui recharge la page,
    tu peux gérer l'evenement ItemCreated du datagrid et récupérer la valeur de la checkbox (sorry pour le code en C# je te laisse convertir en vb )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected void Tondatagrid_ItemCreated(object sender, DataGridItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item)
                {
                    CheckBox chk = (CheckBox)e.Item.FindControl("mycheckbox");
                    if(chk.Checked)
                             //ton traitement
                }
            }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut
    Merci pour ta réponse, je pense avoir compris l'essentiel mais je n'arrive pas du tout à l'appliquer. Déjà pour mettre le code en vbnet

    Pour le moment ça donne ça mais il y a des erreurs de code que je n'arrive pas à résoudre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Protected Sub dataniv_ItemCreated(ByVal sender As System.Object, ByVal e As System.EventArgs)
     
            If e.Item.ItemType = ListItemType.Item Then
                Dim chk As CheckBox
                chk = e.Item.FindControl("mycheckbox")
                If (chk.Checked) Then
                    'ton traitement
                End If
            End If
     
        End Sub
    J'ai du mal à comprendre à quoi correspond le ListItemType enfin surtout ce que c'est.

    Je suis désolée, je vous assure que je fais des efforts...

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 181
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 181
    Par défaut
    Bonjour.

    Petite rectification iron182 :
    ta boucle tu la fais sur le dataview, donc sur les données en base ... ok ?
    Le dataview ça se passe en mémoire...

    Sinon Syrrus, je suis pas trop féru des datagrids (avec le framework 2.0 je suis plutôt datagridview) mais ton code me semble pas trop mal.
    As-tu mis un espion sur DTARV.Row.Item(0).ToString pour voir ce que cela donne ? (Il n'est pas du tout évident que tu récupère "true")

    Cdt.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut
    euh... c'est quoi exactement un espion ???
    C'est quand tu mets un point d'arret à une ligne pour voir la valeur des variables ??
    Si c'est ça je viens de le faire et ça me dit : ""
    Merci j'avais pas pensé à le faire, faut je trouve autre chose que le tostring...

    C'est pas encore gagné

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Bonjour.

    Petite rectification iron182 :

    Le dataview ça se passe en mémoire...

    Sinon Syrrus, je suis pas trop féru des datagrids (avec le framework 2.0 je suis plutôt datagridview) mais ton code me semble pas trop mal.
    As-tu mis un espion sur DTARV.Row.Item(0).ToString pour voir ce que cela donne ? (Il n'est pas du tout évident que tu récupère "true")

    Cdt.

    lol merci je sais que c'est en memoire, ce que je voulais dire c'etait que le dataview était une vue memoire sur les données en base

Discussions similaires

  1. TreeView avec case à cocher
    Par da_latifa dans le forum Delphi
    Réponses: 9
    Dernier message: 07/10/2006, 01h01
  2. Showmessage avec case à cocher
    Par ife dans le forum Delphi
    Réponses: 3
    Dernier message: 20/07/2006, 11h19
  3. CListCtrl avec case à cocher
    Par bebel72 dans le forum MFC
    Réponses: 5
    Dernier message: 20/06/2006, 14h54
  4. Réponses: 2
    Dernier message: 31/03/2006, 15h35
  5. Treeview avec case à cocher
    Par valoji dans le forum Composants VCL
    Réponses: 4
    Dernier message: 28/01/2006, 21h35

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