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 dans le remplissage d'une combo par datatable


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut Ralentissement dans le remplissage d'une combo par datatable
    Salut à tous,
    J'ai un soucis avec une combo dans une application. En effet, j'ai une combo que je remplis avec une datatable à chaque fois que l'utilisateur clik dans une zone de texte. Le problème est qu'au premier chargement, la combo se remplie en moins d'une second mais au après le premier remplissage c'est le calvaire le remplissage de la combo peut mettre jusqu'a 22 secondes en moyenne avant d'afficher les données ce qui fait perdre au moins une minute à un utilisateur en trois clicks. Que faire ??
    Merci!

  2. #2
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut
    Montre ton code pour commencer , c'pas vraiment normal que ça mette plus de temps pas la suite

  3. #3
    Membre très actif Avatar de oussi
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 192
    Par défaut
    c'pas vraiment normal que ça mette plus de temps pas la suite
    Effectivement. Normalement sa doit être le contraire.

  4. #4
    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
    +1

    m'enfin il nous en effet du code, ou au moins le nombre de colonnes/lignes du datatable et la manière de transférer du datatable au combobox
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut
    C'est vrai vous avez raison j'ai oublié de mettre mon code. Le voici:
    Sur un clik dans la zone de texte "txt_Libelle" je rends visible un groupbox dans lequel se trouve ma combo avec la propriétés DropDownStyle à simple.

    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 txt_Libelle_Click(object sender, EventArgs e)
            {
                try
                {
                    this.grp4.Visible = true;
                    this.cmb_fournitures.Focus();
                    tm.remplirCombo(this.cmb_fournitures, "PS_SEL_ListFourniture");
                }
                catch(Exception Ex)
                {
                    tm.messageErreur(Ex.Message.ToString());
                }
     
            }
    la methode "remplirCombo" se trouve dans une classe appelée toutesMethodes que j'instancie comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     toutMethodes tm = New toutesMethodes();
    ensuite je lui passe le nom de la combo et la procédure stockée qui permet la sélection. Une procédure stockée avec une requête de sélection simple.

    voici le code de la méthode :

    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
     
     
    public void remplirCombo(ComboBox Cmb, string Procedure) 
            { 
                try
                {
                    Cnx.SqlCnx.Open(); //Une classe qui contient les informations de connexion à ma base sql server
                    Cmd.Connection = Cnx.SqlCnx;
                    Cmd.Parameters.Clear();
     
                    Cmd.CommandType = CommandType.StoredProcedure;
                    Cmd.CommandText = Procedure;
                    Dtable.Columns.Clear();
                    Dtable.Clear(); //DataTable
                    SqlDataReader SqlDr = Cmd.ExecuteReader();
     
                    Dtable.Columns.Add("C1", typeof(decimal));
                    Dtable.Columns.Add("C2", typeof(string));
                    Dtable.Rows.Add(0, "");
     
                    while (SqlDr.Read())
                    {
                        Dtable.Rows.Add(SqlDr.GetDecimal(0), SqlDr.GetString(1));
                    } SqlDr.Close();
                    Cmb.DataSource = Dtable;
                    Cmb.DisplayMember = "C2";
                    Cmb.ValueMember = "C1";
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message.ToString(), Version(), MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                finally
                {
                    Cnx.SqlCnx.Close();
                }
            }
    Voila! c'est le code qui s'exécute à chaque click dans la zone de texte.

  6. #6
    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
    c'est vrai que c'est pas du code très optimisé déjà
    il vaudrait mieux charger toutes les données possibles au début, et sur le click travailler sur des collections (ou un datatable si tu préfères) pour remplir le combobox sur l'event click

    mais il faudrait aussi voir le code de la procédure stockée, car exécuter une requete qui remonte quelques lignes c'est pas censé être long
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [WD17] Sélection Multiple dans une COMBO par programmation
    Par droliprane dans le forum WinDev
    Réponses: 5
    Dernier message: 25/04/2014, 15h19
  2. Réponses: 2
    Dernier message: 18/10/2011, 14h57
  3. [WD10-Exp]Remplir une combo par programmation
    Par evosan dans le forum WinDev
    Réponses: 5
    Dernier message: 19/04/2007, 10h22
  4. remplissage d'une combo
    Par dan65 dans le forum WinDev
    Réponses: 4
    Dernier message: 13/04/2007, 13h40
  5. Réponses: 6
    Dernier message: 07/06/2006, 12h41

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