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 :

DataGridView Long à charger.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par défaut DataGridView Long à charger.
    Bonjour,

    Je développe une application en c#, j'ai fais ma chaîne de connections et ma requête qui doit afficher les données dans un DataGridView.
    Vu que j'ai beaucoup de ligne à afficher l'application met beaucoup de temps à se lancer .
    Est ce qu'il y a une solution pour afficher les données plus rapidement.


    Merci de votre aide

  2. #2
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Salut
    Non, ou alors en reduisant les donnees que tu affiches dans ton DataGrid.


  3. #3
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Bonjour,

    Alors il y a des astuces pour cela comme le Lazy loading, le but est de charger le Datagrid n lignes par n lignes de façon asynchrone.
    Par exemple tu remplit ton datagrid 100 lignes par 100 lignes dans un processus en arrière plan.
    Sinon comme l'a dit Seth, passer par de la pagination.

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par défaut
    Citation Envoyé par worm83 Voir le message
    Bonjour,

    Alors il y a des astuces pour cela comme le Lazy loading, le but est de charger le Datagrid n lignes par n lignes de façon asynchrone.
    Par exemple tu remplit ton datagrid 100 lignes par 100 lignes dans un processus en arrière plan.
    Sinon comme l'a dit Seth, passer par de la pagination.
    la solution Lazy loading doit etre pas mal aussi mais est ce qu'il y a des exemples.

  5. #5
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Le lazy loading va de paire avec le virtual mode, j'ai envie de dire.

    En ce qui concerne l'implémentation du Lazy, cela dépend de ton sgbd et de la façon dont tu y accède (orm, requête mano ect....), il faut que tu nous donne plus de précisions.

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par défaut
    Citation Envoyé par worm83 Voir le message
    Le lazy loading va de paire avec le virtual mode, j'ai envie de dire.

    En ce qui concerne l'implémentation du Lazy, cela dépend de ton sgbd et de la façon dont tu y accède (orm, requête mano ect....), il faut que tu nous donne plus de précisions.
    Je travaille sur une base de données Informix :

    Je vous donne le code pour accéder au serveur et a la base de donnée :

    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
       OdbcConnection con;
            OdbcDataAdapter adap;
            DataSet Ds;
            public Form1()
            {
                InitializeComponent();
            }
    
            private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
    
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                try
                {
                    con = new OdbcConnection();
                    con.ConnectionString = @"Dsn=***;Driver={SCO Vision ODBC};uid=***;Pwd=*******";
                    con.Open();
            
                   adap = new OdbcDataAdapter("MA REQUETE ", con);
                   
                    Ds = new System.Data.DataSet();
                    adap.Fill(Ds, "ibr");
                    dataGridView1.DataSource = Ds.Tables[0];
                }
                catch (Exception ex)
                {
                    MessageBox.Show("ERREUR\n" + ex.Message, "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Citation Envoyé par mrbrams Voir le message
    Bonjour,

    Je développe une application en c#, j'ai fais ma chaîne de connections et ma requête qui doit afficher les données dans un DataGridView.
    Vu que j'ai beaucoup de ligne à afficher l'application met beaucoup de temps à se lancer .
    Est ce qu'il y a une solution pour afficher les données plus rapidement.


    Merci de votre aide
    En même temps sans le code ça va être dur à dire, combien de ligne affiches-tu ?

    Après tu peux mesuré le temps que met ta requête à être éxécuté et le temps que met le datagridview à les charger avec la class StopWatch

  8. #8
    Membre très actif
    Avatar de didate
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 90
    Par défaut
    Citation Envoyé par mrbrams Voir le message
    Bonjour,

    Je développe une application en c#, j'ai fais ma chaîne de connections et ma requête qui doit afficher les données dans un DataGridView.
    Vu que j'ai beaucoup de ligne à afficher l'application met beaucoup de temps à se lancer .
    Est ce qu'il y a une solution pour afficher les données plus rapidement.


    Merci de votre aide


    Comme le dit @Seth77, tu peux pensé à mettre des filtres, oubien une datagridview paginable (datagridview personnalisé)

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    pour afficher beaucoup de données dans le datagridview msdn recommande de passer par le virtualmode
    c'est une propriété du même nom sur le datagridview, une fois activée ca passe dans un mode moins automatique
    un évènement est levé à chaque fois qu'une cellule est affichée, il faut donner la valeur de cette cellule
    donc toutes les lignes et colonnes n'existent pas réellement à un instant T, seules celles qui sont visibles, ce qui améliore grandement les performances (nous mettons des centaines de milliers de lignes ainsi)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par défaut
    J'ai énormément de lignes et je peux pas les réduires.
    J'ai vu la solution virtualmode mais sur msdn c'est pas trop bien éxpliqué est ce que c'est possible de me donner plus de précision .
    Sinon la solution Lazy loading doit etre pas mal aussi mais est ce qu'il y a des exemples.

    Mercii

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    pour afficher beaucoup de données dans le datagridview msdn recommande de passer par le virtualmode
    c'est une propriété du même nom sur le datagridview, une fois activée ca passe dans un mode moins automatique
    un évènement est levé à chaque fois qu'une cellule est affichée, il faut donner la valeur de cette cellule
    donc toutes les lignes et colonnes n'existent pas réellement à un instant T, seules celles qui sont visibles, ce qui améliore grandement les performances (nous mettons des centaines de milliers de lignes ainsi)
    J'ai vu la solution virtualmode mais sur msdn c'est pas trop bien éxpliqué est ce que c'est possible de me donner plus de précision .

Discussions similaires

  1. Zend Server trop long à charger
    Par geeka dans le forum Zend Framework
    Réponses: 0
    Dernier message: 26/03/2015, 14h17
  2. PC sous Vista trop long à charger
    Par donny dans le forum Windows Vista
    Réponses: 5
    Dernier message: 16/09/2009, 14h14
  3. Datagridview long à charger
    Par eric062 dans le forum VB.NET
    Réponses: 24
    Dernier message: 19/11/2008, 09h28
  4. Site trop long à charger
    Par myspirou dans le forum IIS
    Réponses: 0
    Dernier message: 05/08/2008, 14h49
  5. DBLookupComboBox long à charger
    Par alex2003 dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/01/2008, 11h56

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