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

C# Discussion :

[C# 2.0] Problème de performances avec BindingSource


Sujet :

C#

  1. #1
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut [C# 2.0] Problème de performances avec BindingSource
    Bonjour,

    Je vous expose mon problème: J'ai un DataGridView "bindé" avec une liste d'objets (disons List<myObjet>) et j'ai énormément d'éléments dans ma liste (environ 30 000). Je dois souvent modifier certains attributs des objets de la liste, et ensuite je fais un UpdateData, qui met à jour mon DataGridView avec les données modifiées de la liste.

    Le problème est que cet "UpdateData()" est très long, et je me demande s'il n'y aurait pas une façon de procéder moins coûteuse en ressources.

    Voici le code de ma fonction "UpdateData()". (N'oubliez pas que MaListeData contient plus de 30 000 éléments).

    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
     public void UpdateData(bool bTrueForSaveAndValidateFalseForLoadInControl)
            {
                if (bTrueForSaveAndValidateFalseForLoadInControl)
                {
                    this.bsAcceptedErrors.EndEdit();
                }
                else
                {
                    this.dgdAcceptedErrors.SuspendLayout();
     
                    if (MaListeData != null)
                    {
                        this.bsAcceptedErrors.DataSource = MaListeData;
                        this.bsAcceptedErrors.CurrencyManager.Refresh();
                    }
                }
            }
    Merci!
    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Le paging ?

  3. #3
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut
    Merci pour la piste. Je suis allé voir sur Google et j'ai cru comprendre qu'il y avait un VirtualMode que je pouvais utiliser...

    Je ne vois pas très bien comment utiliser ça, sachant que j'ai déjà une liste de données. D'après ce que j'ai compris, on doit implémenter l'événement "CellValueNeeded" et aller chercher la valeur à afficher dans un map qui associe le numéro de la ligne demandée au data.

    Seul problème, ma grille permet le tri sur les lignes, alors les numéros de lignes ne sont pas fixes...

    Arrfff, quelle galère
    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

  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
    Bonjour,

    Pour faire un "DataGridView bindé avec une liste d'objets (disons List<myObjet>)), j'utilise un Datatable auquel est bindé le datagridView et comportant une column spéciale avec un champ de liaison non applicatif "Identifieur d'objet" (entier différent pour chaque objet) qui permet de faire le lien entre lignes de la tables et objets.
    Lorsqu'on modifie/supprime un objet, on recherche son identifieur dans la table pour modifier/supprimer la ligne correspondante de la DataTable.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut
    Merci, je teste ça avec un DataTable. Je vous tiens au courant.
    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

Discussions similaires

  1. Problème de performance avec une regexp
    Par NicoV dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 21/02/2008, 18h46
  2. Réponses: 7
    Dernier message: 26/04/2007, 09h11
  3. Réponses: 8
    Dernier message: 11/02/2006, 23h36
  4. Problème de performance avec LEFT OUTER JOIN
    Par jgfa9 dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/07/2005, 13h17
  5. [C#] Probléme de performance avec IsDbNull
    Par jab dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/04/2005, 11h39

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