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 :

Classe avec propriété classe et utilisation [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Mai 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 55
    Par défaut Classe avec propriété classe et utilisation
    Bonjour à tous,

    J'ai créé une classe Client qui ressemble à cela :

    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
     
    Imports System.Runtime.Serialization
     
    <DataContract>
    Public Class Client
        <DataMember(Name:="NomClient")>
        Property NomClient As String
     
        <DataMember(Name:="PrénomClient")>
        Property PrenomClient As String
     
        <DataMember(Name:="AdresseClient")>
        Property AdresseClient As String
     
        <DataMember(Name:="CodePostalClient")>
        Property CodePostalClient As String
     
        <DataMember(Name:="VilleClient")>
        Property VilleClient As String
     
        <DataMember(Name:="Interventions")>
        Property Interventions As Intervention
     
        Public Sub New(ByVal nomC As String, ByVal prenomC As String, ByVal adresseC As String, ByVal codePostalC As String, ByVal villeC As String, ByVal interventionC As Intervention)
            NomClient = nomC
            PrenomClient = prenomC
            AdresseClient = adresseC
            CodePostalClient = codePostalC
            VilleClient = villeC
            Interventions = interventionC
        End Sub
     
        Public Sub New()
     
        End Sub
     
     
    End Class
    Dans cette classe j'utilise une propriété Intervention qui est de type Intervention (qui est une classe dont le code est ci après) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Class Intervention
        Property dateIntervention As Date
        Property detailIntervention As String
        Public Sub New(ByVal dateI As Date, ByVal detailI As String)
            dateIntervention = dateI
            detailIntervention = detailI
        End Sub
     
        Public Sub New()
     
        End Sub
    End Class
    Ma première question est la suivante :
    Est ce la bonne méthode pour faire cela ?

    La deuxième question concerne l'utilisation de ces classes.

    J'ai une liste de client qui s'affiche.
    J'aimerais, que quand je clique sur un item de cette liste (un client donc), qu'une autre liste des interventions se remplisse avec les interventions de ce client.

    Voici le code que j'ai pour le moment et qui ne fonctionne pas bien entendu :

    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
     
    Private Sub listClient_ItemClick(sender As Object, e As ItemClickEventArgs) Handles listClient.ItemClick
            selectionClient = DirectCast(e.ClickedItem, Client)
            Dim nomC = selectionClient.NomClient
            Dim prenomC = selectionClient.PrenomClient
            Dim adresseC = selectionClient.AdresseClient
            Dim codePostalC = selectionClient.CodePostalClient
            Dim villeC = selectionClient.VilleClient
     
            If selectionClient.Interventions Is Nothing Then
                btnAjoutIntervention.Visibility = Visibility.Visible
            Else
                listIntervention.ItemsSource = Nothing
                listIntervention.ItemsSource = selectionClient.Interventions
            End If
     
        End Sub
    Dans le cas où aucune interventions n'a été réalisé je fais apparaitre un bouton qui me permet d'en rajouter une.
    Mais je suis aussi bloqué sur l'ajout de cette intervention.

    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 btnValiderIntervention_Click(sender As Object, e As RoutedEventArgs)
            Dim index = clients.IndexOf(listClient.SelectedItem)
            Dim intervention = New Intervention() With {
                .dateIntervention = textDate.Text,
                .detailIntervention = textDetail.Text}
     
     
            selectionClient.Interventions = intervention
     
            clients.Insert(index, selectionClient)
     
            SauvegarderClient()
     
            'listIntervention.ItemsSource = Nothing
            'listIntervention.ItemsSource = selectionClient.Interventions
     
        End Sub
    J'aimerais un coup de pouce concernant mon soucis.

    Je vous remercie par avance pour votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Je pense que ta propriété Interventions dans ton objet client devrait être une liste d'intervention et non un seul objet intervention

  3. #3
    Membre actif
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Mai 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 55
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    Je pense que ta propriété Interventions dans ton objet client devrait être une liste d'intervention et non un seul objet intervention
    J'ai fait quelques essais pendant mes recherches.
    Voici la classe Client modifié avec une liste.

    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
     
    Imports System.Runtime.Serialization
     
     
    <DataContract>
    Public Class Client
        <DataMember(Name:="NomClient")>
        Property NomClient As String
     
        <DataMember(Name:="PrénomClient")>
        Property PrenomClient As String
     
        <DataMember(Name:="AdresseClient")>
        Property AdresseClient As String
     
        <DataMember(Name:="CodePostalClient")>
        Property CodePostalClient As String
     
        <DataMember(Name:="VilleClient")>
        Property VilleClient As String
     
        <DataMember(Name:="Interventions")>
        Property Interventions As New List(Of Intervention)
     
        Public Sub New(ByVal nomC As String, ByVal prenomC As String, ByVal adresseC As String, ByVal codePostalC As String, ByVal villeC As String, ByVal interventionC As Intervention)
            NomClient = nomC
            PrenomClient = prenomC
            AdresseClient = adresseC
            CodePostalClient = codePostalC
            VilleClient = villeC
            Interventions.Add(interventionC)
        End Sub
     
        Public Sub New()
     
        End Sub
    J'essaye de l'utiliser ensuite dans ce bout de code :

    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
     
    Private Sub btnValiderIntervention_Click(sender As Object, e As RoutedEventArgs)
            Dim index = clients.IndexOf(listClient.SelectedItem)
            Dim intervention As New List(Of Intervention)()
     
            intervention.Add(New Intervention() With {.dateIntervention = textDate.Text, .detailIntervention = textDetail.Text})
     
            clients.Remove(listClient.SelectedItem)
     
            selectionClient.Interventions = intervention
     
            clients.Insert(index, selectionClient)
     
            SauvegarderClient()
     
            listIntervention.ItemsSource = Nothing
            listIntervention.ItemsSource = selectionClient.Interventions
     
        End Sub
    Sachant que l'objet selectionClient est de type Client et est remplit dans une autre partie du code.

    Mais j'ai encore du mal à faire fonctionner tout ça ensemble.

    Avec toutes ces recherches je crois que je me mélange un peu les pédales.
    J'ai des erreurs pour charger la liste des interventions mais je ne sais pas si mon remplissage des interventions dans mon objet client est fonctionnel.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Ne jamais oublié d'initialiser une liste si elle est nulle je ne sais pas comment tu fais ca en vb mais en c# c'est un truc comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(Interventions==null){
    Interventions = new List<Intervention>();
    }
    Interventions.Add(InterventionC);

  5. #5
    Membre actif
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Mai 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte débutant

    Informations forums :
    Inscription : Mai 2016
    Messages : 55
    Par défaut
    Merci pour ton aide youtpout978,

    Tout semble bien se dérouler concernant la classe ... je crois parce que j'ai une erreur qui survient.
    Je constate que la collection qui me sert à remplir ma liste se remplit 2 fois.

    En faisans un debogage pas à pas je constate que le listview_itemClick est executé 2 fois. Comment est ce possible ?

    Voici le code de l'itemClick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub listClient_ItemClick(sender As Object, e As ItemClickEventArgs) Handles listClient.ItemClick
            selectionClient = DirectCast(e.ClickedItem, Client)
     
            If selectionClient.Interventions.Count = 0 Then
                btnAjoutIntervention.Visibility = Visibility.Visible
            Else
                For Each obj As Intervention In selectionClient.Interventions
                    interventions.Add(obj)
                Next
                listIntervention.ItemsSource = Nothing
                listIntervention.ItemsSource = interventions
            End If
        End Sub

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    tu peux faire plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      If selectionClient.Interventions.Count = 0 Then
                btnAjoutIntervention.Visibility = Visibility.Visible
            Else
                listIntervention.ItemsSource = Nothing
                listIntervention.ItemsSource = selectionClient.Interventions
            End If
    Check bien si tes données sont pas null à chaque fois sinon ca peut planter

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/10/2012, 19h25
  2. Probleme pour loader une class en utilisant la reflexion
    Par superfly dans le forum Framework .NET
    Réponses: 1
    Dernier message: 18/09/2007, 18h27
  3. Classe et utilisation de plusieurs constructeurs
    Par RR instinct dans le forum UML
    Réponses: 3
    Dernier message: 14/02/2007, 23h46
  4. Pb de chargement de class en utilisant la reflection.
    Par sebastien2222 dans le forum Langage
    Réponses: 1
    Dernier message: 23/10/2006, 22h59
  5. creation dune classe et utilisation
    Par le_voisin dans le forum C++
    Réponses: 9
    Dernier message: 30/08/2006, 21h38

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