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 en simple


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut DataGridView en simple
    Bonjour a tous !
    J' ai fait une petite application qui utilise un DataGridView en remplissant les champs simplement avec les méthodes DataGridView.Rows.Add() puis en accèdant aux Rows avec leur index ...
    Je me suis apercu vers la fin que cela posant un gros problèmes de performances si on charge quelques 2000 lignes (quasiment inutilisable ..)alors qu' avec 15 cela reste fluide ...

    Suis- je obliger de tout refaire avec une BDD ? en utilisant une liste d' objets ?

    Y a t' il une option que j' ai manquée ??

    Merci pour votre lecture

    NB : je charge en fait des fichiers de sous-titre srt, donc les données ne sont pas énormes ...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Par défaut
    Salut,

    Poste ton code stp

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut
    Voici le code ..

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
     private void remplir(string fichier, int append_time)
            {
     
                StreamReader reader = new StreamReader(fichier, System.Text.Encoding.Default);
                string ligne = string.Empty;
                string item = string.Empty;
     
     
                while ((ligne = reader.ReadLine()) != null)
                {
                     try
                {
     
                    if (utils.IsNumeric(ligne) == true && item != string.Empty)
                    {
                        // 1 00:01:46,400 --> 00:01:52,905 ALEXANDRE
     
                        string[] splititem = item.Split(new string[] { "\n", "-->", "\n", }, System.StringSplitOptions.None);
     
                        string item_numero = splititem[0];
                        string item_debut = splititem[1];
                        string item_fin = splititem[2];
     
                        string item_texte = null;
                        for (int i = 3; i < splititem.Count(); i++)
                        {
                           item_texte += splititem[i] + "\n";
                        }
                        item_texte = utils.RemoveEmptyLines(item_texte);
     
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Numero"].Value = splititem[1];
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Debut"].Value = splititem[1];
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Fin"].Value = splititem[1];
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Texte"].Value = splititem[1];
     
     
                        item = null;
                        item += ligne + "\n";
                       // Application.DoEvents();
     
                    }
                    else
                    {
                        item += ligne + "\n";
                    }
                } catch (System.Exception m)
                 {
                     item = null;
                     item += ligne + "\n";
                     Debug.WriteLine("remplir : " + m.Message);
     
                 }
     
     
     
                } // FIN while ..
     
     
                //deselect_rows();
                reader.Close();
     
     
                Grid.Sort(new RowComparerDebut_milliseconds(SortOrder.Ascending)); renum();          
     
                this.Debut_UpDown.Maximum = Convert.ToInt32(soustitre.soustitreliste[soustitre.soustitreliste.Count -1 ].Fin_milliseconds);
                this.Fin_UpDown.Maximum = Convert.ToInt32(soustitre.soustitreliste[soustitre.soustitreliste.Count -1 ].Fin_milliseconds);
                this.Duree_UpDown.Maximum = Convert.ToInt32(soustitre.soustitreliste[soustitre.soustitreliste.Count -1 ].Fin_milliseconds);
     
     
           }
    Il s' agit donc bien d' une "Unbound Grid" ...

    NB : à l' import , le split est ausi très lent (mettons 1 minute pour importer un simple fichier ...)mais la navigation en elle-même devient impossible tellement c' est lent .

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut
    Pardon, il fallait lire ceci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     this.Grid.Rows.Add();
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Numero"].Value = splititem[0];
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Debut"].Value = splititem[1];
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Fin"].Value = splititem[2];
                        this.Grid.Rows[this.Grid.Rows.Count - 1].Cells["Texte"].Value = splititem[3];
    Désolé ...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 349
    Par défaut
    Utils...C'est quoi ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut
    Je teste simplement pour voir si la ligne correspond a un chiffre valide .
    Chaque item correspond donc à un sous-titre comprenant son numero (increment), le debut, la fin (de l' affichage ..) et le texte ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public static bool IsNumeric(string chkNumeric)
            {
                int intOutVal;
                bool isValidNumeric = false;
                isValidNumeric = int.TryParse(chkNumeric, out intOutVal);
                return isValidNumeric;
            }
    Pour info, voila à quoi ressemble un fichier srt :
    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
    1
    00:01:46,400 --> 00:01:52,905
    ALEXANDRE
     
    2
    00:02:10,924 --> 00:02:15,553
    "La chance sourit aux audacieux."
    VIRGILE - L'Enéide
     
    3
    00:02:19,766 --> 00:02:24,020
    BABYLONE, PERSE - JUIN 323 AV. J-C
     
    4
    00:03:02,100 --> 00:03:04,852
    Alexandre, l'armée va se diviser.
     
    5
    00:03:05,020 --> 00:03:08,105
    Les satrapes se révolteront.
    Sans ordres, il y aura la guerre.
     
    6
    00:03:08,357 --> 00:03:10,775
    Nous t'en prions. Dis-nous qui.
     
    7
    00:04:08,125 --> 00:04:10,584
    ALEXANDRIE, EGYPTE 285 AV. J-C
    40 ANS PLUS TARD
    Je précise bien que même si l' import est lent , la navigation l' est tout autant ..

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

Discussions similaires

  1. DataGridView Mise à jour de la base de façon simple ..?
    Par gregcat dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/10/2007, 18h46
  2. Effet de transition simple entre 2 images
    Par ChrisFAPS dans le forum Flash
    Réponses: 2
    Dernier message: 18/04/2003, 12h41
  3. Bon je vais essayer d'être simple :
    Par fpouget dans le forum Langage SQL
    Réponses: 8
    Dernier message: 09/04/2003, 17h46
  4. Edition d'un simple fichier java
    Par mcrepin dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 21/03/2003, 14h28
  5. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

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