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 :

Structure Datagridview déformée après chargement données [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut Structure Datagridview déformée après chargement données
    Bonjour à tous,

    Je reviens vers vous car j'ai un problème lors d'une mise à jour des datagridviews. C'est extrêment lent .....

    Je lie mes datagridviews de cette manière :

    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
    Public Sub GetData(ByVal selectCommand As String)
     
                Call connection1()
                Dim connectionString1 As String = base1 & base3
     
                ' Create a new data adapter based on the specified query.
                Me.Table1dataAdapter = New OleDbDataAdapter(selectCommand, connectionString1)
     
                ' Create a command builder to generate SQL update, insert, and
                ' delete commands based on selectCommand. These are used to
                ' update the database.
                Dim commandBuilder1 As New OleDbCommandBuilder(Me.Table1dataAdapter)
     
                ' Populate a new data table and bind it to the BindingSource.
                'Dim table1 As New DataTable()
     
                table1.Locale = System.Globalization.CultureInfo.InvariantCulture
     
                Table1.Clear()
                Me.Table1dataAdapter.Fill(Table1)
                Me.Table1bindingSource.DataSource = table1
     
    end sub
    Au chargement de mon form principal, j'utilise la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetData("select * from Table1")
    Pour mettre mes datagridviews à jour par rapport à des BDD Access, j'utilisais la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.GetData(Me.Table1dataAdapter.SelectCommand.CommandText)
    Cette commande est trop longue .... Je me suis dis, pourquoi ne pas vider le datatable et recharger comme si je lançais l'application pour faire la MAJ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.Table1DataGridView.DataSource = vbNull
    Me.GetData(Me.Table1dataAdapter.SelectCommand.CommandText)
    De cette manière (pas trop géniale diront certains), cà va beaucoup mieux mais j'ai alors un BUG dans mon datagridview ....
    Ce dernier n'a plus le même format, mes colonnes masquées volontairement apparaissent, certaines colonnes que j'avais mis en gras ne le sont plus ......

    J'avoue que là je suis totalement perdu ..... Merci d'avance pour votre future aide

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Déconnecter/reconnecter le DataSource lors d'un update global est la bonne méthode.

    mes colonnes masquées volontairement apparaissent, certaines colonnes que j'avais mis en gras ne le sont plus ......
    C'est normal puisqu'on a un nouveau dataSource. Il faut donc stocker la liste des colonnes visibles (et éventuellement leur DisplayIndex).
    Pour les colonnes/cellules avec attributs de font ou de couleur, je préconise plutôt de gèrer leur mise en forme via l'event DataGridViewCellFormatting.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Salut Graffito,

    Merci pour ta réponse rapide

    Concernant les formats de mon tableau : colonnes visibles ou non, colonne en gras, etc ... je l'ai fait (étant débutant) pour tous mes tableaux (environ 7 dans différents onglets) en faisant clic-droit sur un datagridview puis "modifier les colonnes".

    J'ai du mal à saisir pourquoi mon tableau changerait de format alors que je recharge les données depuis les mêmes BDD.
    Et si je dois tout coder manuellement, cà va être galère pour moi. Il n'existe pas une commande pour lui dire de laisser les paramètres comme ils sont définis dans les propriétés de mes tableaux après le rechargement des données ?

    Edit : J'ai essayé comme ceci en fait, tout recharger pour mettre à jour les tableaux. Le temps est le même mais toujours les problèmes des tableaux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.Table1DataGridView.DataSource = vbNull
    GetData("select * from Table1")

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Re,

    Bon je continue à essayer de comprendre .... J'ai un autre tableau qui est aussi formaté avec des colonnes cachés, etc ...
    Pourquoi celui-ci ne change pas lorsque je recharge et 3 de mes 7 le font ?

    J'y comprend rien ...

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Bon ben je rame sec ....

    J'ai souvenir qu'on pouvait voir tout ce qu'on a placé avec la boite d'outils (boutons, tableaux, etc ....) en lignes de commandes.

    J'y était arrivé en cliquant par erreur ..... Peut-être un truc qui foire la dedans et qui sème la zizanie....

    Un autre truc avec ce tableau : Je définis la police par défaut des entêtes en arial, j'enregistre, je quitte VB et je le relance et la police est à nouveau en Microsoft ...... si celà peut-aider ....

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    je l'ai fait (étant débutant) pour tous mes tableaux (environ 7 dans différents onglets) en faisant clic-droit sur un datagridview puis "modifier les colonnes".
    J'espère que tu n'as pas multiplié le code en utilisant une fonction commune à l'ensemble des GridView.
    Recommendation aux débutants : dès que l'on a plusieurs instructions identiques dans différentes parties du code, il faut penser à les factoriser dans une fonction unique.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2014, 17h30
  2. [WD18] Rafraîchir écran après chargement de données
    Par fdelepine dans le forum WinDev
    Réponses: 3
    Dernier message: 03/07/2013, 15h43
  3. Réponses: 15
    Dernier message: 28/10/2011, 15h45
  4. [PHPExcel] download fichier après chargement des données
    Par seurjer dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 11/10/2011, 13h43
  5. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 17h16

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