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 :

[VB .NET] Copier les Items d'un ComboBox Vers un Autre


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Points : 124
    Points
    124
    Par défaut [VB .NET] Copier les Items d'un ComboBox Vers un Autre
    Bonjour,

    Voilà j'ai en fait un WindowsForm qui contient plusieurs ComboBox. Ces combobox sont destinés à faire des choix d'écoles en fonction de concours.

    Donc lorsque qu'un utilisateur renseigne le même concours deux fois à suivre, il ne doit pas pouvoir sélectionner dans les deux la même école.

    Il faudrait donc que lorsqu'il choisit une école dans une Combobox, celle ci se copie dans la deuxième combobox en enlevant l'école sélectionnée.

    J'ai déjà essayé ça :
    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
    Dim Elements() As Object
    Private Sub cboPremConcours2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboPremConcours2.SelectedIndexChanged
    
            If Me.cboPremConcours2.SelectedItem <> Me.cboPremConcours1.SelectedItem Then
    
                Dim Ecoles As New OleDbCommand("SELECT * FROM ecole WHERE CodeConcours='" + Me.cboPremConcours2.SelectedItem + "'", OConnexion)
                Dim dt As OleDbDataReader
    
                Try
                    OConnexion.Open()
                    Me.cboPremEcolesConcours2.Items.Clear()
                    dt = Ecoles.ExecuteReader
                    'Remplissage de la Liste Déroulante selon le Concours Choisi
                    While dt.Read
                        Me.cboPremEcolesConcours2.Items.Add(dt.Item(0))
                    End While
                Catch ex As Exception
                    MessageBox.Show("Erreur dans la Récupération des Données", "Echec Récupération", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Me.cboPremEcolesConcours2.Text = "- Pas de Données Récupérées -"
                End Try
                OConnexion.Close()
    
            Else
    
                Me.cboPremEcolesConcours1.Items.CopyTo(Elements, 0)
                Me.cboPremEcolesConcours2.Items.AddRange(Elements)
    
            End If
    
            'Remise en Etat de la Sélection de l'Ecole
            Me.cboPremEcolesConcours2.Text = "- Ecoles du Concours -"
    
            'Activation de la liste des Ecoles
            Me.cboPremEcolesConcours2.Enabled = True
    End Sub
    Mais il me dit que paramètre item ne peut pas être null alors que je n'ai pas de paramètre item. Donc si vous avez une solution ce serait cool

  2. #2
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    pour passer des element d'une combobox, listbox ou tout autre composant ou tout simplement modifier tes donnees , il est conseille de changer ca a la source(pas la db mais intermediare):

    dans ton cas:

    1) je lis mes donnees de tb1 les store dans une dTable1 par example
    2) je lis mes donnees de tb2 les store dans une dTable2 par example

    ensuite tu fait:
    myComboBox1.DataSource=dTable1 ;
    myComboBox2.DataSource=dTable2 ;

    puis

    tu fais passer les element d'une table a une autre .

  3. #3
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    Citation Envoyé par D4rkTiger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Elements() As Object
                    While dt.Read
                        Me.cboPremEcolesConcours2.Items.Add(dt.Item(0))
                   End While
    Mais il me dit que paramètre item ne peut pas être null alors que je n'ai pas de paramètre item. Donc si vous avez une solution ce serait cool
    sinon ton probleme viens du Items.Add(dt.Item(0))
    rajoute une condition !=null

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par zeavan
    pour passer des element d'une combobox, listbox ou tout autre composant ou tout simplement modifier tes donnees , il est conseille de changer ca a la source(pas la db mais intermediare):

    dans ton cas:

    1) je lis mes donnees de tb1 les store dans une dTable1 par example
    2) je lis mes donnees de tb2 les store dans une dTable2 par example
    Cela voudrais dire que je devrais écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 0
    
    While dt.Read
            Me.cboPremEcolesConcours2.Items.Add(dt.Item(0))
            dTable1(i) = dt.Item(0)
            i += 1
    End While
    Pour ensuite l'utiliser comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.cboPremEcolesConcours2.DataSource = dTable1
    Le Problème c'est que les ComboBox que j'utilise sont avec un nombre de lignes variables suivant le concours donc je ne connais pas la taille du tableau

    En tout cas je vais essayé avec un nombre bidon et je reviendrai dire
    Et merci pour votre aide

  5. #5
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    Citation Envoyé par D4rkTiger
    Cela voudrais dire que je devrais écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 0
     
    While dt.Read
            Me.cboPremEcolesConcours2.Items.Add(dt.Item(0))
            dTable1(i) = dt.Item(0)
            i += 1
    End While
    Pour ensuite l'utiliser comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.cboPremEcolesConcours2.DataSource = dTable1
    Le Problème c'est que les ComboBox que j'utilise sont avec un nombre de lignes variables suivant le concours donc je ne connais pas la taille du tableau

    En tout cas je vais essayé avec un nombre bidon et je reviendrai dire
    Et merci pour votre aide


    non plutot ceci :
    si tu veux utiliser un datareader
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    DataTable dt=new DataTable("monTableau");
    dt.Columns.Add("maColonne");
     
    while(monDataReader.read())
    {
      DataRow dr= dt.NewRow();
      dr["maColonne"]=monDataReader.iem(0);
      dt.Rows.Add(dr);
    }
     
    this.cboPremEcolesConcours2.DataSource=dt;
    avec dataadpater plus lent mais plus court

    monDataAdapter.fill(maDataTable);

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Points : 124
    Points
    124
    Par défaut
    OPui j'ai vu que j'avais des complications , Je vais donc essayé ta nouvelle solution.

    Merci

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Points : 124
    Points
    124
    Par défaut
    J'ai essayé ta solution mais je ne sis pas arrivé à mes fin. Il y avait un début j'avais réussi à resynchroniser 3 des mes combobox.

    Mais j'ai finalement trouvé une méthode. C'est de créer des OleDbParameter qui viennent compléter ma requête a chaque choix que j'effectue.

    Donc voilà à quoi je suis arrivé :
    Ma Requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Ecoles As New OleDb.OleDbCommand("SELECT sigle FROM ecole WHERE CodeConcours=?", OConnexion)
    Mon Paramètre du Concours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public ParamConcours As New OleDb.OleDbParameter("Concours", OleDb.OleDbType.VarWChar)
    La Fonction d'Enregistrement :
    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
    'Liste des Ecoles du Concours Selectionné
        Public Sub LstEcoles(ByVal Concours As String, ByRef ListeModif As ComboBox)
            Dim DataEcoles As OleDb.OleDbDataReader
            Try
                OConnexion.Open()
    
                If Ecoles.Parameters.Item("Concours").Value <> Concours Then
                    Ici j'ajoute le premier paramètre à ma requête, c'est le Concours qui a été choisi. Il n'est modifié que s'il change.
                    Ecoles.Parameters.Item("Concours").Value = Concours
                End If
    
                'Execution de la Commande
                DataEcoles = Ecoles.ExecuteReader()
    
                'Vidage des Listes
                ListeModif.Items.Clear()
    
                While DataEcoles.Read
                    'Listes Déroulantes à Remplir
                    ListeModif.Items.Add(DataEcoles.Item(0))
                End While
                DataEcoles.Close()
            Catch ex As Exception
                MessageBox.Show("Aucune Ecoles n'a pu être mis en relation avec le concours selectionné" & Chr(13) & "L'Administrateur va être prévenu de cette erreur", "Erreur Liste Ecoles", MessageBoxButtons.OK, MessageBoxIcon.Error)
                ErreurLog(ex.ToString)
            Finally
                OConnexion.Close()
            End Try
        End Sub
    Le Paramètre de l'Ecole Choisie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Modification de ligne de Commande
            Ecoles.CommandText &= " AND sigle <> ?"
            Ecoles.Parameters.AddWithValue("Ecole" & Ecoles.Parameters.Count.ToString, Me.cboLstPremEcoles.SelectedItem)
    Ce qi fait que à chaque choix d'une ecole ma ligne de commande reçoit un complément d'infos sur ce qu'elle doit sélectionner et ceux pour n'importe quel Concours.

    Voilà si vous avez des questions sur comment j'ai fait n'hésitez pas!

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

Discussions similaires

  1. comment copier les items d'un menu dans un autre ?
    Par thierrybo dans le forum Débuter
    Réponses: 2
    Dernier message: 17/09/2010, 17h01
  2. Réponses: 12
    Dernier message: 09/06/2008, 17h54
  3. Transférer les items d'un ListBox vers un autre
    Par youssef222 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 11/04/2008, 14h34
  4. Copier les items d'un ListView vers un Combobox
    Par rvdth dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/03/2008, 14h14
  5. Réponses: 4
    Dernier message: 11/09/2006, 17h58

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