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 6 et antérieur Discussion :

[VB6] Datagrid afficher ou cacher des colonnes par code


Sujet :

VB 6 et antérieur

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut [VB6] Datagrid afficher ou cacher des colonnes par code
    Bonjour,
    J'aimerai afficher ou cacher des colonnes d'un Datagrid dynamiquement, c'est à dire sur sélection dans une combo, j'affiche ou non une certaine colonne.
    J'appelle la procédure suivante sur click sur ma combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub subAfficherColconv()
        Dim bAfficher As Boolean
        bAfficher = (cb2Categorie.Text = cstMutuelle)
            DataGridListeIdentifiant.Columns(edeb_conv).Visible = bAfficher
            DataGridListeIdentifiant.Refresh
    End Sub
    Si je sélectionne dans ma combo de façon à cacher la colonne, la colonne qui auparavant était affichée est cachée, jusque là c'est normal.
    Mais si j'essaie de rafficher la colonne, elle n'est pas affichée mais j'ai quand même DataGridListeIdentifiant.Columns(edeb_conv).Visible = True.

    NB le booléen bAfficher est bien à Faux quand je veux afficher la colonne, il n'y a pas d'erreur la dessus.
    Lorsque la colonne est supposée être affichée on a bien
    DataGridListeIdentifiant.Columns(edeb_conv).Visible = True

    Je suis perdue
    Pouvez-vous m'aider?
    Merci beaucoup

  2. #2
    STG
    STG est déconnecté
    Candidat au Club
    Inscrit en
    Mai 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    En inversant les lignes de codes cela donne quoi ?

    En remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub subAfficherColconv() 
        Dim bAfficher As Boolean 
        bAfficher = (cb2Categorie.Text = cstMutuelle) 
            DataGridListeIdentifiant.Columns(edeb_conv).Visible = bAfficher 
            DataGridListeIdentifiant.Refresh 
    End Sub
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub subAfficherColconv() 
        Dim bAfficher As Boolean 
        bAfficher = (cb2Categorie.Text = cstMutuelle) 
            DataGridListeIdentifiant.Refresh 
            DataGridListeIdentifiant.Columns(edeb_conv).Visible = bAfficher 
    End Sub

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Pas mieux.
    A mon avis le Refresh ne sert à rien.
    J'ai également essayé de redimensionner le datagrid , pour provoquer un réaffichage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    '        DataGridListeIdentifiant.Width = DataGridListeIdentifiant.Width - 100
            DataGridListeIdentifiant.Width = DataGridListeIdentifiant.Width + 100
    Sans plus de résultat.
    D'autres idées?

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    essayes un redimensionnement de la colonne

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    J'ai essayé, voir ci dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub subAfficherColconv()
        Dim bAfficher As Boolean
        bAfficher = (cb2Categorie.Code = cstMutuelle) Or (cb2Categorie.Code = "")
     
            If bAfficher Then
                DataGridListeIdentifiant.Columns(edeb_conv).Width = 500
            Else
                DataGridListeIdentifiant.Columns(edeb_conv).Width = 0
            End If
            DataGridListeIdentifiant.Refresh
     End Sub
    Ca ne marche pas mieux. Merci quand même.

  6. #6
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    j'ai fais le test suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Activate()
     
    Dim compteur As Long
     
    For compteur = 0 To DataGrid1.Columns.Count - 1
    Combo1.AddItem DataGrid1.Columns(compteur).Caption
    Next compteur
     
    End Sub
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Combo1_Click()
     
        DataGrid1.Columns(Combo1.ListIndex).Visible = Not DataGrid1.Columns(Combo1.ListIndex).Visible
     
    End Sub
    en selectionnant dans le combo j'ai bien l'affichage/masquage qui fonctionne parfaitement.
    Par contre dans certains cas, le datagrid fait un scroll horizontale ce qui fait que la colonne n'apparait pas si je ne rescrolle pas

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Merci Bidou,
    En fait le problème vient du fait que c'est la première colonne (0) que je cache, si je cache une autre colonne pas de problème.
    Mais ça ne m'arrange pas pour autant, ma colonne reste toujours cachée.
    En fait j'ai trouvé, comme tu as parlé d'un problème de scrolling, j'ai défini la propriété leftcol et ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Sub subAfficherColconv()
        Dim bAfficher As Boolean
        bAfficher = (cb2Categorie.Code = cstMutuelle)
     
            DataGridListeIdentifiant.Columns(edeb_conv).Visible = bAfficher
            If bAfficher Then
                DataGridListeIdentifiant.LeftCol = edeb_conv
            End If
    End Sub
    Merci beaucoup, je vais de ce pas mettre résolu dans le titre.
    NB: C'est bien ce que je disais le Refresh ne servait à rien

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

Discussions similaires

  1. cacher des colonnes d'une datagrid
    Par ouadie99 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/01/2009, 13h46
  2. détecter des colonnes par leur classe
    Par destructive dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/05/2007, 17h28
  3. cacher des colonnes du struts layout datagrid
    Par imsory dans le forum Struts 1
    Réponses: 1
    Dernier message: 02/04/2007, 11h28
  4. Fixer la largeur des colonnes par prog ?
    Par marot_r dans le forum Access
    Réponses: 5
    Dernier message: 28/07/2006, 16h50
  5. [WD10] Afficher les noms des colonnes
    Par devalender dans le forum WinDev
    Réponses: 4
    Dernier message: 24/02/2006, 14h38

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