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 :

ListBox.SelectedItem qui retourne un DataRowView


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Par défaut ListBox.SelectedItem qui retourne un DataRowView
    Bonjour,

    j'ai actuellement un petit soucis pour comprendre ce que me retourne ma listbox quand je sélectionne un item.
    J'ai remplis ma liste box à partir d'un bindingsource. Je fais celà car je trie la liste à partir d'une datatable (je ne sais pas si c'est la meilleure solution mais au moins ça fontionne).
    Mon problème étant qu'en prennant comme datasource de ma listbox un binddingsource, mon ListBox.SelectedItem me renvoie un objet de type DataRowView :

    Dans mon form1 :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            vendorquery = "SELECT * FROM Vendor"
            vendorcommand = New SqlCommand(vendorquery)
            vendoradapter = New SqlDataAdapter(vendorcommand)
            vendorcommand.Connection() = myconnection
            vendoradapter.Fill(myset, "Vendor")
            vendordatatable = myset.Tables("Vendor")
            vendorbindsource.datasource = vendordatatable
            vendorbindsource.Sort = "Name"
    Ensuite j'appelle un form2 :

    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
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            ListBox1.DisplayMember = "Name"
            ListBox1.DataSource = Form1.vendorbindsource
     
        End Sub
     
        Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
     
            If ListBox1.SelectedIndex <> -1 Then
     
                Dim drv As DataRowView
     
                drv = ListBox1.SelectedItem
     
                LabelName.Text = drv.Row(ListBox1.SelectedIndex)
     
            End If
     
        End Sub
    Histoire de j'ai créé une variable de datarowview pour voir ce que ça faisait et quand j'applique la méthode Row avec l'item sélectionné, ça m'affiche des valeurs aléatoires de ma datatable.

    Si quelqu'un pouvait m'éclairer sur ce qu'est exactement un datarowview et comment se repérer dedans ça serait gentil.

    Merci.

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    drv.Row(ListBox1.SelectedIndex)
    ...
    Ce code n'a pas de sens :
    drv.Row te renvoie le DataRow que représente le DataRowView. L'indexeur d'un DataRow renvoie le champ (la colonne) à l'index spécifié. Mais l'index que tu passes (ListBox1.SelectedIndex) est un index de ligne, pas de colonne : si la ligne spécifiée a l'index 3, cette instruction renverra le 4e champ (index 3), ce qui n'a pas de sens ! A priori c'est toujours le même champ que tu as besoin de récupérer, ça ne dépend pas de la ligne sélectionnée...

    Il est plus pratique d'utiliser le nom du champ que son index. Par exemple, si le champ que tu as besoin de récupérer s'appelle "Name", fais plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LabelName.Text = drv.Row("Name")
    D'ailleurs tu peux accéder au champ directement à partir du DataRowView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LabelName.Text = drv("Name")

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Par défaut
    OKI DOKI

    Je sais pas trop pourquoi j'ai (très) bêtement pensé que le datarow renvoyait directement à ma DataTable et que je devais passer quand même par l'index de ma listbox ... la fin de journée surement ...

    PS : dsl je viens seulement de voir l'existance de la balise [Code]

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

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. Réponses: 3
    Dernier message: 14/08/2009, 13h01
  3. Procedure stockée qui retourne un curseur
    Par kinaï dans le forum Débuter
    Réponses: 1
    Dernier message: 10/08/2004, 14h42
  4. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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