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 :

Ralentissement entre 2 datagridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut Ralentissement entre 2 datagridview
    Bonjour à tous

    Dans ma fenêtre, je possède 2 dataGridView.

    Quand je sélectionne dans un datagrid, le 2e datagrid se change en fonction des abonnements d'un membre.

    C'est très long changer de rangée de le datagrid, ce n'est plus fluide comme avant.


    C'est peut-être du au code qui est trop lourd...

    Voici la manipulation que je fais :

    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
     public void RemplirGridMembre()
            {
                con.InitialiserConnection();
                MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT idMembre,prenom,nom FROM membre ORDER BY idMembre DESC ", con.ConnectionBD);
     
                DataTable table = new DataTable();
                adapter.Fill(table);
     
                BindingSource bSource = new BindingSource();
                bSource.DataSource = table;
     
                DataGridView dgView = new DataGridView();
                dataGridView1.DataSource = bSource;
     
                dataGridView1.Columns[0].Width = 30;
                dataGridView1.Columns[0].HeaderText = "ID";
     
                dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                dataGridView1.Columns[1].HeaderText = "Prénom";
     
                dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                dataGridView1.Columns[2].HeaderText = "Nom";
     
     
     
            }
    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
    public void RemplirGridAbonnement()
            {
                con.InitialiserConnection();
                membre.IdMembre = Convert.ToInt32(txtIdMembre.Text);
                MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT t3.idActivite, t3.nom FROM abonnement AS t1 INNER JOIN membre AS t2 ON (t1.idMembre = t2.idMembre) INNER JOIN activite AS t3 ON (t3.idActivite= t1.idActivite) WHERE t1.idMembre = " + membre.IdMembre+"", con.ConnectionBD);
     
                DataTable table = new DataTable();
                adapter.Fill(table);
     
                BindingSource bSource = new BindingSource();
                bSource.DataSource = table;
     
                DataGridView dgView = new DataGridView();
                dataGridView2.DataSource = bSource;
     
                dataGridView2.Columns[0].Width = 30;
                dataGridView2.Columns[0].HeaderText = "ID";
     
                dataGridView2.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                dataGridView2.Columns[1].HeaderText = "Nom";
            }
    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
    private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
            {
                if (dataGridView1.CurrentRow != null)
                {
                    index = dataGridView1.CurrentCell.RowIndex;
     
                    int valeur = Convert.ToInt32(dataGridView1[0, index].Value);
     
     
                    membre = membre.GetById(valeur);
     
     
                    txtIdMembre.Text = membre.IdMembre.ToString();
                    txtPrenom.Text = membre.Prenom.ToString();
                    txtNom.Text = membre.Nom.ToString();
                    txtDateNaissance.Text = membre.DateNaissance.ToString();
                    txtAdresse.Text = membre.Adresse.ToString();
                    txtCodePostal.Text = membre.CodePostal.ToString();
                    txtVille.Text = membre.Ville.ToString();
                    txtMaison.Text = membre.TelMaison.ToString();
                    txtCellulaire.Text = membre.TelCellulaire.ToString();
                    txtCourriel.Text = membre.Courriel.ToString();
                    txtMotPasse.Text = membre.MotPasse.ToString();
     
     
     
     
                }
     
                RemplirGridAbonnement();
     
     
     
            }

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Un truc que je ne comprends pas

    Qu'essaye tu de faire avect dgView ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                DataGridView dgView = new DataGridView();
                dataGridView2.DataSource = bSource;

    Mais au dela de ca il y a beaucoup d'anomalie de design

    1- Le datasource d'un Dgv doit etre mis a null avant une nouvelle assignation de source
    2- Les propriétés des colonnes doivent etre assignées dans l'event DataBindingComplete
    3- Ferme tu tes connexions qq part ?

    etc ...

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Il s'ouvre et se ferme à chaque fois

    Pour ce qui est des DataGrid, j'ai suivi les manipulations sur internet de comment remplir.

    Peut-être qu'il y a une facon plus facile.

    Je suis présentement à l'école et il fonctionne à merveille sans ralentissement. Peut-être le seven 64 bits qui fait ça...

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Peut-être le seven 64 bits qui fait ça...
    Dans ce cas pas besoin de te donner des conseils !


  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    nombre de lignes retournées ?
    nombre de lignes dans les tables ?
    des index ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Je me permet d'insister (meme si tout le monde s'en f...)

    Que les deux methodes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public void RemplirGridAbonnement()
    public void RemplirGridMembre()
    Semblent contenir un certain nombre d'anomalie

    1- :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView dgView = new DataGridView();
    Ne sert a rien a mon avis

    2- Si RemplirGridAbonnement() est appelé a tout bout de champ,
    a) j'y vois un InitConnection mais je ne vois pas de close connection
    b) Recreer a chaque fois le binding source me semble inutile et il est conseillé DataSource a null avant réassignation


    3- Je repete que les proprieté des colonnes doivent se mettre dans un event DataBindingComplete et PAS immediatement apres assignation de la source !!

Discussions similaires

  1. Copier/Coller entre Excel et un dataGridView
    Par vladvad dans le forum Windows Forms
    Réponses: 8
    Dernier message: 29/11/2017, 01h34
  2. [Débutant] Rechercher des entrées sur datagridview à partir d'un textbox
    Par defcodeaks dans le forum VB.NET
    Réponses: 5
    Dernier message: 18/08/2011, 21h00
  3. Drag & Drop entre 2 DataGridView
    Par kritopal dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/01/2011, 08h31
  4. Problème de synchronisation entre un DataGridView et un tableAdapter
    Par PtiteDéveloppeuse dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/11/2007, 17h19
  5. [VB.NET] DataGridView à double entrée: comment faire?
    Par BillyboyK dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/04/2006, 10h06

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