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 :

Problème d'affichage dans un datagridview lors d'héritage.


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Problème d'affichage dans un datagridview lors d'héritage.
    Hello,

    Ce matin, je code une modif qui devrait être sans problème et pourtant lors des tests, le dgv n'affiche pas l'info...

    Ce qui doit être affiché :

    Il s'agit en fait de détails de fichier coda (fichier d'opérations bancaires en Belgique). J'ai donc une liste de mouvements bancaires dont voici la définition
    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
    Public Class Movement
        Public Property Id As Integer
        Public Property Amount As Decimal
        Public Property OperationDate As Date
        Public Property ComptabilisationDate As Date
        Public Property CommunicationMovement As CommunicationMovement
        Public Property CommunicationInformation As CommunicationInformation
        Public Property CounterPartName As String
        Public Property CounterPartAccount As String
     
        Public Sub New(id As Integer, amount As Decimal, operationdate As Date, comptabilisationdate As Date,
                       counterpartname As String, counterpartaccount As String,
                       commMovement As RawCommunication, commInformation As RawCommunication)
            Me.Id = id
            Me.Amount = amount
            Me.OperationDate = operationdate
            Me.ComptabilisationDate = comptabilisationdate
            Me.CounterPartName = counterpartname
            Me.CounterPartAccount = counterpartaccount
            Me.CommunicationMovement = CODA_VISUALIZER.CommunicationMovement.ParseCommunication(commMovement)
            Me.CommunicationInformation = CODA_VISUALIZER.CommunicationInformation.ParseCommunication(commInformation)
        End Sub
    End Class
    La liste des mouvements s'affiche sans problème dans un premier dgv. Mais lors de la sélection d'une ligne de mouvement, je veux bien sûr afficher les communications dans deux autres dgv (un pour chaque communication).

    Voici les communications (on va se contenter de celle de mouvement, c'est quasi pareil pour les autres) :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Public Class CommunicationMovement101
        Inherits CommunicationMovement
     
        Public Property StructuredCode As String
        Public Property XActCode As String
     
        Public Sub New(comm As String)
            Me.StructuredCode = comm.Substring(0).Trim
        End Sub
    End Class
     
    Public Class CommunicationMovement102
        Inherits CommunicationMovement
     
        Public Property StructuredCode As String
        Public Property XActCode As String
     
        Public Sub New(comm As String)
            Me.StructuredCode = comm.Substring(0).Trim
        End Sub
    End Class
     
    Public Class CommunicationMovement114
        Inherits CommunicationMovement
     
        Public Property CardSchema As ECardSchema
        Public Property Pos As String
        Public Property PeriodNumber As Integer
        Public Property OperationSequenceNumber As Integer
        Public Property OperationDate As Date
        Public Property OperationTime As TimeSpan
        Public Property TerminalName As String
        Public Property TerminalZipCode As String
        Public Property OperationRef As String
     
        Public Enum ECardSchema As Integer
            Aucun = 0
            BancontactMisterCash = 1
            Maestro = 2
            Privé = 3
            TINA = 5
            Autres = 9
        End Enum
     
        Public Sub New(comm As String)
            CardSchema = CInt(comm.Substring(0, 1))
            Pos = comm.Substring(1, 6).Trim
            PeriodNumber = CInt(comm.Substring(7, 3))
            OperationSequenceNumber = CInt(comm.Substring(10, 6))
            Dim day, month, year As String
            day = comm.Substring(16, 2)
            month = comm.Substring(18, 2)
            year = comm.Substring(20, 2)
            OperationDate = New Date(CInt(year) + 2000, CInt(month), CInt(day))
            OperationTime = New TimeSpan(CInt(comm.Substring(22, 2)), CInt(comm.Substring(24, 2)), 0)
            TerminalName = comm.Substring(27, 16).Trim
            TerminalZipCode = comm.Substring(43, 10).Trim
            OperationRef = comm.Substring(53, 16)
        End Sub
    End Class
    Et voici comment je procède pour l'affichage histoire que les choses soient bien présentées :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
        Private Sub dgvFile_RowEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgvFile.RowEnter
            If e.RowIndex > -1 Then
                movement = coda.GetMovementById(CInt(dgvFile.Rows(e.RowIndex).Cells("dgvcId").Value))
                ShowComm(movement)
            End If
        End Sub
     
        Public Sub ShowComm(movement As Movement)
            If movement.CommunicationMovement IsNot Nothing Then
                dgvCommMovement.DataSource = Nothing
                Select Case movement.CommunicationMovement.GetType
                    Case GetType(CommunicationMovement101)
                        InitDgvCommMovement(102)
                        dgvCommMovement.DataSource = CType(movement.CommunicationMovement, CommunicationMovement101)
                    Case GetType(CommunicationMovement102)
                        InitDgvCommMovement(102)
                        dgvCommMovement.DataSource = CType(movement.CommunicationMovement, CommunicationMovement102)
                    Case GetType(CommunicationMovement114)
                        InitDgvCommMovement(114)
                        dgvCommMovement.DataSource = CType(movement.CommunicationMovement, CommunicationMovement114)
                End Select
            End If
        End Sub
     
        Private Sub InitDgvCommMovement(type As Integer)
            With dgvCommMovement
                .AutoGenerateColumns = False
                .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
                With .Columns
                    Dim index As Integer
                    .Clear()
                    Select Case type
                        Case 101, 102
                            index = .Add("dgvcStructuredCode", "Code Structuré")
                            .Item(index).DataPropertyName = "StructuredCode"
                            index = .Add("dgvcXActCode", "Code transaction")
                            .Item(index).DataPropertyName = "XActCode"
                        Case 114
                            index = .Add("dgvcCardSchema", "Schéma de carte")
                            .Item(index).DataPropertyName = "CardSchema"
                            index = .Add("dgvcPos", "Pos")
                            .Item(index).DataPropertyName = "Pos"
                            index = .Add("dgvcPeriodNumber", "Numéro de période")
                            .Item(index).DataPropertyName = "PeriodNumber"
                            index = .Add("dgvcOperationDate", "Date de l'opération")
                            .Item(index).DataPropertyName = "OperationDate"
                            index = .Add("dgvcOperationTime", "Heure de l'opération")
                            .Item(index).DataPropertyName = "OperationTime"
                            index = .Add("dgvcTerminalName", "Nom du terminal")
                            .Item(index).DataPropertyName = "TerminalName"
                            index = .Add("dgvcTerminalZipCode", "Code postal du terminal")
                            .Item(index).DataPropertyName = "TerminalZipCode"
                            index = .Add("dgvcOperationRef", "Référence de l'opération")
                            .Item(index).DataPropertyName = "OperationRef"
                    End Select
                End With
            End With
        End Sub
    Ce qu'il se passe (ce qui est observable) :
    Le dgv de la communication est correctement initialisé avec les bonnes colonnes. Malheureusement, aucune donnée n'est affichée. Je mets pourtant bien quelque chose dans la propriété DataSource.
    J'ai déjà essayé plusieurs manières. Avec cast, sans cast, en déclarant une nouvelle variable du "bon" type et en mettant la communication dedans (en la castant ou non). Le résultat est toujours le même.

    Quelque chose m'échappe forcément.

    Merci de me remettre dans le droit chemin ^^.
    Kropernic

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Quand je disais que quelque chose devait m'échapper...
    C'était tellement stupide. La solution m'est venue naturellement après un bon repas ^^.

    On ne passe pas un objet à un dgv mais une liste d'objet. Même si la liste n'est destinée qu'à contenir qu'un seul objet.

    Une fois ma communication mise dans une liste de communications, ça marche tout de suite mieux...
    Kropernic

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

Discussions similaires

  1. Problème d'affichage dans une datagridview
    Par Helfy dans le forum C#
    Réponses: 0
    Dernier message: 09/05/2012, 11h03
  2. problème d'affichage dans un DataGridView
    Par maloue dans le forum VB.NET
    Réponses: 2
    Dernier message: 04/01/2012, 12h07
  3. Problème d'affichage dans un datagridview sous MySQL en c#
    Par Redg9 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 21/01/2009, 18h40
  4. Problème d'affichage dans un composant TScrollBox
    Par erossi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/09/2005, 12h29
  5. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 13h00

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