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] Stocker un id dans une combo non chargée via ds ?


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 58
    Points : 46
    Points
    46
    Par défaut [VB.net] Stocker un id dans une combo non chargée via ds ?
    Hello,

    j'ai une combo que je remplie sans passer par un datasource (je la remplie à la main), je n'ai pas de .tag par item ...

    Comment puis je stocker un id par item hormis faire une liste à coté ...

    Merci.

  2. #2
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    la question a étée posée il y a tres peu de temps fait une recherche

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    j'ai bien évidemment fait une recherche avant de posté.

    Cependant, soit je me débrouille mal soit la recherche est pas très pratique.

    j'ai essayé combo + tag
    combo + id
    et 2 , 3 autres et rien trouvé.

    (c'est le seul défaut de ce forum = sa recherche

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Je suis dans le même cas. Aurais-tu trouvé solution à ce problème RiiiDD ? Je fais aussi des recherches mais je ne trouve pas non plus...

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    J'ai déjà posté une solution en C# que je copie ici avant délestage ...

    Un combobox peut contenir des objets et pas seulement des String.
    Pour associer un indice à un nom, il faut utiliser une structure (ou une classe) .
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        public struct IndexedValue
            {
            public String Nom;
            public int Index;
            //Constructeur
            public IndexedValue(String nom, int index) {
                this.Nom = nom;
                this.Index = index;
                }
            //surcharger ToString pour l'affichage dans un ComboBox
            public override String ToString()  {
                return Nom;
                }
            }
    Pour remplir le ComboBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                this.comboBox1.Items.Add(new IndexedValue("Toto", 123));
    On peut ensuite récupérer simplement l'index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
                //utiliser l'objet sélectionné dans le ComboBox
                IndexedValue val = (IndexedValue)this.comboBox1.SelectedItem;
                int index = val.Index;
                //...
                }
    On ne peut pas faire boire un âne qui n'a pas soif.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Ok merci de cette réponse, je vais voir pour adapter ça en Vb.Net !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Voilà, j'ai adapté cette méthode pour Vb.Net. Voici le résultat :

    La classe qui représente un item :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    '
    ' Classe qui permet de remplir une comboBox pour que celle-ci bénéficie
    ' d'un libellé pour chaque élément et d'un identifiant associé.
    '
    Public Class itemComboBox
     
    	' Le libellé de l'item
    	Private sItemLibelle As String
     
    	' L'identifiant associé
    	Private iItemId As Integer
     
    	'
    	' Constructeur
    	'
    	' @param	[String]	sLibelle	La chaîne du libellé de l'élément à afficher dans la comboBox.
    	' @param	[Integer]	iId			L'identifiant de l'élément.
    	' @return	[Void]
    	'
    	Public Sub New(ByVal sLibelle As String, ByVal iId As Integer)
    		If sLibelle = "" Then Throw New Exception("Le libellé de l'élément ne peut être vide.")
    		If iId = 0 Then Throw New Exception("L'identifiant de l'élément ne peut valoir 0.")
     
    		sItemLibelle = sLibelle
    		iItemId = iId
    	End Sub
     
    	'
    	' Redéfinition de la méthode ToString pour que la comboBox puisse afficher les libellés des éléments.
    	'
    	' @param	[Void]
    	' @return	[String]			Le libellé de l'élément.
    	'
    	Public Overrides Function ToString() As String
    		Return sItemLibelle
    	End Function
     
    	'
    	' Getter de l'identifiant de l'élément courant.
    	'
    	' @param	[Void]
    	' @return	[Integer]			L'identifiant associé à l'élément.
    	'
    	Public Function getId()
    		Return iItemId
    	End Function
     
    End Class
    Pour ajouter un élément à une combo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cbMaCombo.Items.Add( New itemComboBox("Toto", 123) )
    Ou pour remplir la combo depuis un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim aElements = New itemComboBox(iNbElements) {}
    aElements = chargerElementsDepuisBdd()
    cbMaCombo.Items.AddRange(aElements)
    Pour récupérer l'identifiant associé à l'élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub cbMaCombo_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbMaCombo.SelectedIndexChanged
    	Dim element As itemComboBox = cbMaCombo.SelectedItem
    	MsgBox(element.getId)
    End Sub
    C'est tout ! Encore merci NicolasG ! Ca fait plaisir d'avoir des réponses de temps en temps !

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/06/2011, 11h51
  2. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  3. [VB.Net] Comment stocker un .doc dans une BDD ?
    Par SergeF dans le forum Contribuez
    Réponses: 8
    Dernier message: 12/10/2005, 12h43
  4. Stocker un noeud dans une variable
    Par Devotion dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 23/09/2004, 17h02
  5. Comment stocker un ficher dans une table postgres
    Par josoft dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/06/2003, 16h41

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