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

VB.NET Discussion :

Refresh sur combobox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut Refresh sur combobox
    Hello,

    Je me replonge à peine dans vb.net donc ce sera sans doute une question de débutant...

    J'ai une combobox que je remplis avec un datasource contenant des années. Ce combobox sert de filtre sur un datagrid qui affiche des dates, ce qui fait que si je mets 2010 dans la combobox, j'ai donc les dates relatives à 2010 qui s'affichent dans le datagrid.

    Seulement, lorsque je rajoute des dates (via un objet calendar qui modifie le datasource), j'aimerai que ma combo se mette à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Mon datasource que je vide
    monDataSourceAnnee.Clear()
     
    'Je fais ensuite une boucle pour le remplir, qui fonctionne bien 
     
    'Je trie les années dans le datasource
    monDataSourceAnnee.Sort()
     
    'je remplis ma combo
    maComboAnnee.DataSource = monDataSourceAnnee
     
    'Je récupère le texte actuel du datasource pour mettre à jour le datagrid
    monDataGrid.DataSource = maFonctionDataSourceDG(maComboAnnee.Text)
    Problème, c'est que la combo ne se met pas à jour. J'ai tenté les fonctions refresh, qui ne fait rien, les items.clear() ou de passer le "monDataGrid.DataSource" à nothing, puis lui replacer le "monDataSourceAnnee", mais pareil, pas de modification de la liste. Par conséquent, si je n'ai pas de donnée pour une certaine année, mon combo affiche quand même l'année si j'efface dans le datagrid toutes les références à cette année, m'affichant ensuite un datagrid vide pour l'année en question.

    De plus si j'utilise des items.clear ou le nothing, cela me fait évidemment exploser la fonction "maFonctionDataSourceDG".

    Des suggestions ?

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    dans quel événement fait tu ton code ?

    je pense que si tu modifie la base directement,
    il faut que tu détruise ta base chargée et que tu charge la nouvelle
    *c'est juste un idée*

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut
    Le code s'effectue dans une méthode appelée lors de la validation de l'ajout d'une date par le bouton d'ajout de ma form, lorsque je delete une ligne dans le datagrid et au chargement de la form.

    La combobox se charge via les dates rentrées dans le datagrid, stockées dans la base, desquelles je n'extraie que l'année pour remplir la combo. Donc, je ne peux malheureusement pas trop vider la base.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut
    Pour être précis, c'est au moment ou j'écrase l'ancien datasource

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'je remplis ma combo
    maComboAnnee.DataSource = monDataSourceAnnee
    que ca foire. Mon datasource a bien le nombre de ligne voulu, mais une fois ce bout de code exécuté, ma combo a toujours le même nombre d'élément qu'avant.

    Exemple :

    ma combo avait avant les valeurs suivantes :
    2009
    2010

    mon datasource
    2009
    2010
    2011

    Après le passage de ce bout de code ben... Rien n'a changé.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut
    Erreur de ma part... Ma combo se retrouve alors avec 2 items, mais avec un datasource contenant bien 3 valeurs...

    Donc j'ai essayé la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'je remplis ma combo
    maComboAnnee.DataSource = nothing
    maComboAnnee.DataSource.Items.Clear()
    maComboAnnee.DataSource = monDataSourceAnnee
    Sauf qu'alors, maComboAnnee.Text retourne une valeur vide dans la fonction suivante. Et tout plante.

    Le datasource de maComboAnnee est considéré comme null alors que la troisième ligne ci-dessus le remplis à nouveau pourtant.

  6. #6
    Membre éprouvé Avatar de Capitaine Kirk
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    Bonjour

    Citation Envoyé par Djoul82 Voir le message
    ou de passer le "monDataGrid.DataSource" à nothing
    pourquoi c'est pas plutôt la ComBobox que tu passerais à .DataSource = Nothing pour ensuite lui affecter le nouveau monDataSourceAnnee ? parce que au vu de ton dernier message de toute évidence le code
    maComboAnnee.DataSource = monDataSourceAnnee n'écrase pas l'ancien comme tu l'espéré,donc moi je tenterai ma chance à vider le DataSource, affecter a la Combobox pour lui en passer un tout neuf . Enfin c'est juste une idée.

    Désolé j'ai pas rafraichi la page et j'avais pas vu que c'est ce que tu avais fais dans le dernier exemple de code que tu as posté

  7. #7
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut
    Précision :

    je découvre à l'instant que maDataSourceAnnee est un arraylist. (ca parait surement logique pour beaucoup, voir ca ne changera rien au problème, mais sait-on jamais)

  8. #8
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut
    J'ai réglé mon problème différemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    maComboBox.dataSource = nothing
    maComboBox.Items.Clear()
     
    For Each dsYear As String In monDataSourceAnnee
    maComboBox.Items.Add(New ListBoxItem(dsYear, dsYear)
    Next
     
    maComboBox.Text = Ctype(monDataSourceAnnee(0), String)

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

Discussions similaires

  1. Bloquer Refresh sur un panel
    Par TicTacToe dans le forum Composants VCL
    Réponses: 4
    Dernier message: 04/01/2006, 13h35
  2. Utilisation de "refresh" sur un champ calculé
    Par Nicko29 dans le forum Access
    Réponses: 27
    Dernier message: 22/12/2005, 22h58
  3. problème de refresh sur une DBGrid
    Par lidouka dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/12/2005, 17h12
  4. Event Click droit sur ComboBox
    Par AF_STjohn dans le forum C++Builder
    Réponses: 8
    Dernier message: 29/04/2005, 11h48
  5. Problèmes d'évènements sur ComboBox
    Par bakaneko dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2004, 08h46

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