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

Windows Forms Discussion :

Problème de performance affichage datagridview sur l'event DataBindingComplete


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Problème de performance affichage datagridview sur l'event DataBindingComplete
    Bonjour à tous,

    Je rencontre un problème sur la mise en forme d'un DataGridView, lorsque j'utilise la méthode DataBindingComplete pour mettre en gras certaine ligne en fonction de la valeur d'une cellule, j'ai un temps de traitement extraordinairement long pour seulement quelque ligne dans la BDD.


    J'ai pu lire sur internet qu'il fallait passer par CellValueNeeded en mettant a true la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dgv_mails.VirtualMode = true;
    et en s'abonnant à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dgv_mails.CellValueNeeded += new DataGridViewCellValueEventHandler(dgv_mails_CellValueNeeded);
    puis en déclarant dans la methode CellValueNeeded le cellFormating. j'ai donc fait comme cela :

    //form Load
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dgv_mails.VirtualMode = true;
                dgv_mails.CellValueNeeded += new DataGridViewCellValueEventHandler(dgv_mails_CellValueNeeded);
    Methode de traitement
    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 void dgv_mails_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
            {
                foreach (DataGridViewRow row in dgv_mails.Rows)
                {
                    DataGridViewCell Cellule = row.Cells["MI_ETAT_READ"];
                    if (Cellule.Value == null) return;
     
                    if (Cellule.Value.ToString() == "0")
                        row.DefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Bold);
     
                    else
                        row.DefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Regular);
                }
     
            }
    Je n'arrive pas au résultat voulu, les lignes de la condition ne sont pas en Gras.

    Merci pour vos commentaires.

  2. #2
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Même s'il s'agit d'une DataGridView en Virtual mode, l'event CellFormatting devrait suffire pour modifier la présentation de la cellule (font, backcolor, FormattedValue) sans utiliser CEllValueNeeded.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Merci pour ton retour, oui le problème que j'ai c'est le temps de chargement comme je charge le DataGridView au lancement de la form, le temps d'affichage de celle-ci est longue est ce que tu as une bonne solution pour palier à ce type de problème.

    Merci pour ton aide

  4. #4
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    La boucle "foreach (DataGridViewRow row in dgv_mails.Rows)" pose problème :
    En virtual mode, CellValueNeeded doit simplement affecter e.value en fonction de e.RowIndex et e.ColumnIndex.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Désolé je galère vraiment est ce que tu aurai un bout de code qui montre comment affecter les valeur du tableau avec des performances convenables.
    MErci de ton aide.

  6. #6
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Regarde la documentation dans ce lien, en ignorant les paragraphes 4 à 9 si la datagridview est en read-only.

    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. Bug => avec DataGridView sur DefaultValuesNeeded event
    Par dsolheid dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/01/2008, 14h21
  2. Filtrer un DataGridView, sur quel Event ?
    Par dsolheid dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/01/2008, 15h04
  3. [C#] Problème d'affichage d'une fenêtre (event Load)
    Par PB-W dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/03/2006, 13h48
  4. problème dans l'affichage sur word (VB6)
    Par rupeni dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/11/2005, 12h40
  5. Problème de performance sur une "grosse" BD
    Par frechy dans le forum Installation
    Réponses: 9
    Dernier message: 19/09/2005, 16h52

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