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 :

displaymember et propriétés


Sujet :

VB.NET

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut displaymember et propriétés
    Bonjour,

    c'est plus une question qu'un problème

    Bon alors j'ai un combobox et je lui attribu en displaymember une propriété que j'ai défini

    la CB:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CbEquipe_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CbEquipe.SelectedValueChanged, CbProcess.SelectedValueChanged
            If Not CbProcess.SelectedValue = Nothing And Not CbEquipe.SelectedValue = Nothing Then
                Dim listeResponsable = CtrlProcess.getListeResponsable(CbProcess.SelectedValue, CbEquipe.SelectedValue, True)
                CbResponsable.DisplayMember = "nomPrenom"
                CbResponsable.ValueMember = "Id"
                CbResponsable.DataSource = listeResponsable
            End If
        End Sub
    la propriété que j'ai défini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public ReadOnly Property nomPrenom() As String
            Get
                Return (_Nom.ToUpper + " " + _Prenom.Substring(0, 1).ToUpper + _Prenom.Substring(1).ToLower).Trim
            End Get
        End Property
    avec les deux propriétés qu'elle se sert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Property Nom() As String
            Get
                Return _Nom
            End Get
            Set(ByVal value As String)
                _Nom = value.ToUpper.Trim
            End Set
        End Property
    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 Property Prenom() As String
            Get
                Return _Prenom
            End Get
            Set(ByVal value As String)
                Try
                    Dim init = value.Substring(0, 1).ToUpper
                    Dim fin = value.Substring(1).ToLower
                    value = init & fin
                Catch ex As Exception
                End Try
                _Prenom = value.Trim
            End Set
        End Property
    et la requête dont je me sers :


    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
    Private Const SELECTUSERBYRESPONSABILITE As String = "select u.UTIL_ID, u.UTIL_NOM, u.UTIL_PRENOM from TBL_UTILISATEUR u, TBL_RESPONSABLE r where u.UTIL_ID = r.RESP_UTIL_ID " & _
                                                                "and r.RESP_EQUIP_ID = @Equipe and RESP_PROC_ID = @Process and u.UTIL_ACTIF = @Statut"
     
    Shared Function getListeResponsable(ByVal proc As Integer, ByVal equip As Integer, ByVal statut As Boolean) As ArrayList
            Dim listeResponsable As New ArrayList
            cnx = AccesBase.getConnection
            cmd = New SqlCommand(SELECTUSERBYRESPONSABILITE, cnx)
            With cmd.Parameters
                .Add(New SqlParameter("@Equipe", SqlDbType.Int))
                .Add(New SqlParameter("@Process", SqlDbType.Int))
                .Add(New SqlParameter("@Statut", SqlDbType.Int))
            End With
            Dim statu As Integer
            If statut Then statu = 1 Else statu = 0
            With cmd
                .Parameters("@Equipe").Value = equip
                .Parameters("@Process").Value = proc
                .Parameters("@Statut").Value = statu
            End With
            cnx.Open()
            reader = cmd.ExecuteReader
            While reader.Read
                Dim resp = New Utilisateur(reader.Item("UTIL_ID"), reader.Item("UTIL_NOM"), reader.Item("UTIL_PRENOM"))
                listeResponsable.Add(resp)
            End While
            reader.Close()
            cnx.Close()
            Return listeResponsable
        End Function
    le constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub New(ByVal pId As Integer, ByVal pNom As String, ByVal pPrenom As String)
            Me.Id = pId
            Me.Nom = pNom
            Me.Prenom = pPrenom
        End Sub
    mais il ne me met jamais "nomPrenom" dans la cb, il met toujours le nom de l'objet (GestionProduction2.Utilisateur), est ce qu'on ne peut mettre que des setters en displaymember ? les readonly ne fonctionnent pas?

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Alors ce n'est peut-être pas ça vu que le vb.net et moi, ça fait ... !

    Faudrait pas un peu typer tes objets et tes listes ?
    Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim listeResponsable As New List(of GestionProduction2.Utilisateur)
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim listeResponsable As New ArrayList
    ....

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Oui effectivement, il faudrait que je type un petit peu plus fortement mes listes, mais bon j'aime bien laisser à VS la surprise de ce que je lui mets dans les composants

    Enfin je fais toujours comme ça et d'habitude ça marche très bien, sauf que d'habitude je mets en displaymember des colonnes récupérer en BdD mais là j'aurais besoin d'y mettre une propriétés readonly que j'ai moi même définie (avec 2 colonnes de la BdD).

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Au pire tu overrides le toString de ta classe avec ce que tu veux et ce sera bon ! Pas l'idéal mais pour le cas présenté, ça fonctionnera !

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Au pire tu overrides le toString de ta classe avec ce que tu veux et ce sera bon ! Pas l'idéal mais pour le cas présenté, ça fonctionnera !
    Bon bah j'ai fait comme tu dis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Overrides Function ToString() As String
            Return nomPrenom
        End Function
    mais j'aimerais bien avoir le fin mot de cette histoire quand même, je laisse en non résolu encore un peu au cas où quelqu'un connait la solution

Discussions similaires

  1. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59
  2. Accés rapide aux propriétés d'un Objet
    Par Alacazam dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/11/2002, 21h56
  3. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33
  4. [controle] propriété read only
    Par Fizgig dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/08/2002, 10h30
  5. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07

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