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

Windows Forms Discussion :

[C#] Remplir combo


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Par défaut [C#] Remplir combo
    Salut. J'ai le contenu d'un champ d'une table x qui doit remplir un combobox. Il y a un grand nombre d'enregistrement, j'effectue le remplissage au démarrage de l'application, ça prend une dizaine de seconde. Maintenant en cours d'exécution le contenu de ce combo est susceptible de changer. Il se peut qu'il soit amener à se "reremplir" totalement.
    Y-a t'il un moyen de stocker la première fois la collection d'items, et ensuite de les réatribuer plus rapidement que en ajouter items par items ?
    J'ai essayé en stockant les items dans une autre Combo, et d'ajouter items par items à partir de celui ci afin d'éviter l'accès à la base de donnée, mais je ne gagne pas énormément de temps...

    Quelqu'un peut me renseigner ?

    Merci.

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    alors j'ai plusieurs choses à te proposer, je sais pas si ca pourra coller avec ton appli :

    1 - tu peux utiliser un thread, je sais pas si tu sais ce que c'est , ton appli se lance en meme temps que ta combo se remplie, comme ca tu attends pas, par contre est ce que tu les utilisateurs seront suceptible de se servir de la combo dès le lancement de l'appli je sais pas.

    2 - tu utilise la sérialisation, tu enregistre les données dans un fichier binaire sur le disque dur du pc qui execute l'appli, quand tu reouvrira l'appli tu vas aller lire le contenu du fichier binaire et rempli ta combo avec, je sais pas si ca ira enorment plus vite, mais certainement plus vite que de faire une requete

    un lien pour la sérialisation :

    http://plasserre.developpez.com/v5-8.htm

  3. #3
    Membre éclairé Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Par défaut
    Les threads j'y ai pensé. Mais ca ne collera pas.
    Je vais essayé ton deuxième point. On va voir ce que ca donne. Merci.

    Si quelqu'un à une autre idée ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Pour remplir le contrôle, tu as intérêt à utiliser Control.SuspendLayout() et Control.ResumeLayout().

    Ca ne peut pas faire de mal mais reste à voir si c'est significatif par rapport à un accès BDD...

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    pourquoi ne te sert tu pas d'un dataview et tu dis à ton combo que sa data source est ton dataview ?

  6. #6
    Membre éclairé Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Par défaut
    Citation Envoyé par NiamorH
    pourquoi ne te sert tu pas d'un dataview et tu dis à ton combo que sa data source est ton dataview ?
    J'essaye mais je ne l'ai jamais fais directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    				 this.comboCode.Items.Clear(); 
    				 this.daCodes.Fill(this.dsPrincipal1.Codes_Postaux); 	
    					this.comboCode.DataSource=this.dsPrincipal1.Codes_Postaux;
    					this.comboCode.DisplayMember="Code Postal";
    					this.comboCode.ValueMember="Code Postal";
    Code Postal c'est le nom du champ... Où est ce que je me trompe parce que il ne m'affiche strictement rien...

    :

  7. #7
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Je vais te dire comment je fonctionne :
    Sur mon formulaire de départ (un MDI le plus souvent mais peu importe), je charge chaque table de ma base de données dans des odda (oledbdataadapter).
    Je génère une source de données (le DataSet) j'en crée une instance "oMesDonnees" et la remplit via les methode Fill de mes odda.
    Toute mes données sont là donc dès que j'ouvre une autre form qui requiert des données je passe cette instance en parametre.
    Egalement, dès que je doit faire un ajout ou une suppression, je me sert de lui (removerowat et createnewrow puis add si je me rappelle bien).

    Dès que je dois AFFICHER des données (comme toi), je crée d'abord une instance DataView qui porte le nom d'une Table "dvClient" par exemple.
    Je fais : dvClient.Table = oMesDonnees.Client

    Je me sert du Rowfilter de mon dataview pour simuler une requete SQL. "FideliteClient <> '" & txtFidelite & "'"

    et enfin, que ce soit pour un combo ou un datagrid, je me sert de leur datasource
    cbo.datasource = dvClient
    ' Precise le valuemember et displaymember comme tu le fais

    Maintenant lorsque qu'un ajout est fait le DataView est automatiquement mis a jour et le combo/datagrid aussi.

  8. #8
    Membre éclairé Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Par défaut
    Je n'ai pas encore eu le temps d'essayer mais ca devrait aller :-) merci !

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

Discussions similaires

  1. remplir combo box a partir base donnees
    Par amali85 dans le forum JDBC
    Réponses: 7
    Dernier message: 24/06/2011, 14h10
  2. remplir combo box avec liste des pays
    Par ygeeg dans le forum Windows Forms
    Réponses: 0
    Dernier message: 19/02/2010, 16h20
  3. remplir combo par programmation -> ID ?
    Par azertyqwerty001 dans le forum WinDev
    Réponses: 4
    Dernier message: 05/11/2009, 10h11
  4. remplir combo avec liste des pays via un service
    Par dimainfo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/09/2009, 18h00
  5. [WD11] Remplir combo par programmation
    Par leroidje dans le forum WinDev
    Réponses: 3
    Dernier message: 17/12/2007, 18h08

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