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 :

Problème pour "réinitialiser" une listbox


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut Problème pour "réinitialiser" une listbox
    Bonsoir

    J'ai une question surement simple sur comment vider une listbox

    J'ai une première listbox qui se remplie avec un dataset, et lorsque je sélectionne un élément de cette listbox cela remplie une deuxième listbox (même procédé, requête sur un dataset)

    J'ai essayé d'utiliser la fonction clear, remove, ca me vide bien la deuxième listbox en visuel (en ayant bien sur paramétrer le datasource sur nothing)

    mais lorsque je sélectionne un élément sur la première listbox tout les éléments réapparaissent et s'accumulent

    Je ne souhaite volontairement pas passer par un bouton (sauf mis a part pour test) pour garder une navigation plus rapide sur le soft

    Mon code:

    Remplissage de la première listbox

    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
    Private Sub Categories_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= data.mdb;"
            strSql = "SELECT [code type], type FROM [2-RUBRIQUES_locale] WHERE [code gamme] = " & Me.Label1.Text
            ObjetConnection = New OleDbConnection
            ObjetConnection.ConnectionString = strConn
            ObjetConnection.Open()
            ObjetCommand = New OleDbCommand(strSql)
            ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
            ObjetCommand.Connection() = ObjetConnection
            ObjetDataAdapter.Fill(ObjetDataSet, "[2-RUBRIQUES_locale]")
            ObjetDataTable = ObjetDataSet.Tables("[2-RUBRIQUES_locale]")
            ListBox1.DisplayMember = "type"
            ListBox1.ValueMember = "code type"
            ListBox1.DataSource = ObjetDataSet.Tables("[2-RUBRIQUES_locale]")
            ObjetConnection.Close()
     
        End Sub
    Remplissage de la deuxième listbox:

    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
        Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
     
            If ListBox1.SelectedIndex <> -1 Then
     
                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= data.mdb;"
                strSql = "SELECT [code type1], [code type2], type FROM [2-RUBRIQUES2_locale] WHERE [code type2] = " & ListBox1.SelectedValue.ToString
                ObjetConnection = New OleDbConnection
                ObjetConnection.ConnectionString = strConn
                ObjetConnection.Open()
                ObjetCommand = New OleDbCommand(strSql)
                ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
                ObjetCommand.Connection() = ObjetConnection
                ObjetDataAdapter.Fill(ObjetDataSet, "[2-RUBRIQUES2_locale]")
                ObjetDataTable = ObjetDataSet.Tables("[2-RUBRIQUES2_locale]")
                ListBox2.DisplayMember = "type"
                ListBox2.ValueMember = "code type1"
                ListBox2.DataSource = ObjetDataSet.Tables("[2-RUBRIQUES2_locale]")
                ObjetConnection.Close()
     
            End If
        End Sub
    Fonction pour vider la listbox2, je l'ai placer sur un bouton pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
    Me.ListBox2.DataSource = Nothing
            ListBox2.Items.clear()
            ListBox2.Refresh()
     
        End Sub
    End Class
    Est ce que je dois vider le dataset? vu que la requête est rappelée a chaque sélection d'un élément sur la listbox1.

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    Après quelques tests je remarque qu'en gardant uniquement la clause Nothing

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Me.ListBox2.DataSource = Nothing
     
     
     
        End Sub
    Ma listbox se vide, donc la réponse se trouve la dedans.. Comment vider, supprimer un datasource? En sachant qu'a chaque sélection il se régénère, enfin je pense être sur la bonne voie mais je patauge un peut...

    J'ai également essayé sur le bouton Ca me vide bien LES listbox, mon problème vient en fait que je vide une listbox "vide" une fois le nothing fait... comment vider le contenu de la listbox2 sur l'objetdataset?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    A mon avis le problème est que tu n'as pas de clé primaire sur tes tables, donc à chaque fois que tu fais un Fill du DataSet, ça ajoute à la DataTable les lignes renvoyées par la requête.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    Bonsoir, merci pour ta réponse,

    Effectivement pour les deux tables la les clés primaires n'étaient pas présentes.

    Je les ai donc initialisés et remis les relations en place.

    Mais ça ne fonctionne toujours pas, a chaque click sur le listbox1 les lignes s’additionne dans la listbox2.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah vide manuellement la DataTable "[2-RUBRIQUES2_locale]" avant de faire le Fill alors...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    Mais c'est magique :-)

    Merci beaucoup pour ton aide!

    Bonne soirée!

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    N'oublie pas le bouton stp

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    voila :-)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/04/2006, 15h10
  2. problème pour l'ajout d'une clé étrangère
    Par ELKCHAOU dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/12/2005, 10h38

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