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 :

DatagridView et choisir les collonnes


Sujet :

VB.NET

  1. #1
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut DatagridView et choisir les collonnes
    Bonjour à vous,

    Besoin d'aide ou d'une piste pour un bout de code...
    J'ai télécharger cette application (Afficher le contenu d'un fichier texte dans un DatagridView et choisir les colonnes à afficher)

    Au niveau du formulaire (Colonnes.vb) je souhaiterai ajouter un message pour me dire le nombre de colonne choisi par l'utilisateur.
    J'ai ajouté sur le Click du bouton1 un msgbox....en fin du code.
    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
     
       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim UnNuméro As Integer = LeDset.Tables.Count - 1
            Dim NomTable As String = String.Concat("Table_", UnNuméro.ToString)
            Dim UneNouvelleRangée As DataRow = Nothing
            'Faire la liste des colonnes qui doivent être affichées.
            ListeColonnesàGarder.Clear()
            For Each rangée As DataRow In TableColonnes.Rows
                If rangée.Item("Visible") = True Then
                    Try
                        ListeColonnesàGarder.Add(rangée.Item("Nom"))
                    Catch ex As Exception
                    End Try
                End If
            Next
            Select Case My.Settings.bouton
                Case "affichage"
                    'On affiche les colonnes
                    'sans extraire les colonnes
                    'choisies dans une npouvelle table
                    TraiteLesColonnes()
                    Me.DataGridView1.DataSource = TableColonnes
                Case "table"
                    'Les colonnes choisies seront extraites
                    'dans une nouvelle table
                    Dim LaNouvelleTable As DataTable = My.Forms.Form1.DSet.Tables.Add(NomTable)
                    For Each UneColonne As String In ListeColonnesàGarder
                        LaNouvelleTable.Columns.Add(UneColonne)
                    Next
                    For Each UneRangée As DataRow In TableInitiale.Rows
                        UneNouvelleRangée = LaNouvelleTable.Rows.Add
                        For Each UneColonne As String In ListeColonnesàGarder
                            UneNouvelleRangée.Item(UneColonne) = UneRangée.Item(UneColonne)
                        Next
                    Next
                    My.Forms.Form1.AfficheTable(LaNouvelleTable)
            End Select
     
            MsgBox(ListeColonnesàGarder.Count)
     
        End Sub
    J'obtiens un résultat qui n'est pas cohérent avec la valeur réelle...d'autant que j'ai mis UneRangée.Item("Visible") = False ....dans le code de :

    Private Sub Colonnes_Load(sender As Object, e As EventArgs) Handles Me.Load

    Comme ça les cases sont décochées....et je souhaiterai qu'a chaque click le mesgbox me dise 1 et puis 2 et puis 3.....humm ou totalise le nombre total....

    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
     
       Private Sub Colonnes_Load(sender As Object, e As EventArgs) Handles Me.Load
            'Affiche une liste des noms de champs (colonnes)
            'dans un second DataGridView
            'La seconde colonne permet de choisir
            'quelles colonnes resteront, ou seront, affichées
            Me.RadioButton1.Checked = True
            Dim UneRangée As DataRow = Nothing
            TableColonnes = My.Forms.Form1.DSet.Tables("Colonnes")
            If Not IsNothing(TableColonnes) = Nothing Then
                ' Catch ex As Exception
                TableColonnes = My.Forms.Form1.DSet.Tables.Add("Colonnes")
                With TableColonnes
                    .Columns.Add("Nom", GetType(String))
                    .Columns.Add("Visible", GetType(Boolean))
                    For Each UneColonne As DataColumn In TableInitiale.Columns
                        UneRangée = .Rows.Add
                        UneRangée.Item("Nom") = UneColonne.ColumnName
                        UneRangée.Item("Visible") = False 'ICI J AI REMPLACE PAR FALSE
                    Next
                End With
            End If
            Me.DataGridView1.DataSource = TableColonnes
        End Sub
    Je n'ai visiblement pas beaucoup de jugeote, car ça fait dix plombes que je cherche.....

    Merci de votre aide...

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      UneRangée.Item("Visible") = False 'ICI J AI REMPLACE PAR FALSE
    Cela ne change probablement pas grand chose, si les changements se font correctement. C'est une valeur par défaut

    En fait c'est cette sub qui fait foi que la colonne est sélectionnée ou non:

    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
    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
            Dim i As Integer = 0
            Dim j As Integer = 0
            Select Case DataGridView1.CurrentCell.Value
                Case True
                    i = DataGridView1.CurrentCell.RowIndex
                    j = DataGridView1.CurrentCell.ColumnIndex
                    DataGridView1.CurrentCell.Value = False
                    TableColonnes.Rows(i).Item(j) = False
                Case False
                    i = DataGridView1.CurrentCell.RowIndex
                    j = DataGridView1.CurrentCell.ColumnIndex
                    DataGridView1.CurrentCell.Value = True
                    TableColonnes.Rows(i).Item(j) = True
            End Select
        End Sub
    Peut-être que si tu testes d'une façon ou d'une autre, le nombre de lignes de TableColonnes avec

    Tu pourrais peut-être le suivre en temps réel.

    Et actuellement c'est cette sub qui donne la quantité réelle de colonnes à afficher:

    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 Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim UnNuméro As Integer = LeDset.Tables.Count - 1
            Dim NomTable As String = String.Concat("Table_", UnNuméro.ToString)
            Dim UneNouvelleRangée As DataRow = Nothing
            'Faire la liste des colonnes qui doivent être affichées.
            ListeColonnesàGarder.Clear()
            For Each rangée As DataRow In TableColonnes.Rows
                If rangée.Item("Visible") = True Then
                    Try
                        ListeColonnesàGarder.Add(rangée.Item("Nom"))
                    Catch ex As Exception
                    End Try
                End If
            Next
            Select Case My.Settings.bouton
                Case "affichage"
                    'On affiche les colonnes
                    'sans extraire les colonnes
                    'choisies dans une npouvelle table
                    TraiteLesColonnes()
                    Me.DataGridView1.DataSource = TableColonnes
                Case "table"
                    'Les colonnes choisies seront extraites
                    'dans une nouvelle table
                    Dim LaNouvelleTable As DataTable = My.Forms.Form1.DSet.Tables.Add(NomTable)
                    For Each UneColonne As String In ListeColonnesàGarder
                        LaNouvelleTable.Columns.Add(UneColonne)
                    Next
                    For Each UneRangée As DataRow In TableInitiale.Rows
                        UneNouvelleRangée = LaNouvelleTable.Rows.Add
                        For Each UneColonne As String In ListeColonnesàGarder
                            UneNouvelleRangée.Item(UneColonne) = UneRangée.Item(UneColonne)
                        Next
                    Next
                    My.Forms.Form1.AfficheTable(LaNouvelleTable)
            End Select
        End Sub
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 07/12/2017, 20h19
  2. Choisir les caractère d'un champs à afficher
    Par Floch dans le forum Access
    Réponses: 1
    Dernier message: 31/05/2006, 15h59
  3. de RVB en gris => comment choisir les params??
    Par gronaze dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 27/04/2006, 11h09
  4. [Lumières] Comment choisir les lumières à activer ?
    Par bigquick dans le forum OpenGL
    Réponses: 3
    Dernier message: 30/10/2004, 01h58
  5. [VB.NET] Choisir les valeurs des items d'un combo box?
    Par Eithelgul dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/06/2004, 10h13

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