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 :

Variable de class et type anonyme


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 Variable de class et type anonyme
    Hello,

    Voici une Sub d'un formulaire.
    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
        Private Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click
            Dim data = (From d In Promo.DTO.DetailsDemo
                        Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo = d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType).Concat(
                        From d In Promo.DTO.DetailsDepartment
                        Select Id = d.Id, Department = d.Department, CodeDemo = CType(Nothing, PROMO_DTO.CodeDemo), Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType)
     
            If ckbDepartment.Checked Then
                data = (From d In data
                        Where d.Department.Id = CShort(cbDepartment.SelectedValue)
                        Select d)
            End If
     
            If ckbConcession.Checked Then
                data = (From d In data
                        Where d.CodeDemo.Id = CInt(cbConcession.SelectedValue)
                        Select d)
            End If
     
            If ckbPercent.Checked Then
                data = (From d In data
                        Where d.Percentage = nudPercent.Value
                        Select d)
            End If
     
            dgvDemo.DataSource = data.ToList
        End Sub
    Ce que je cherche à faire est de déclarer data en tant que variable de classe histoire de pouvoir l'utiliser dans une autre Sub tout en gardant les filtres s'il y en a eu.

    Par contre, il faut lui donner un type du coup à cette variable. Et c'est là que je coince. Aucune idée de ce qu'il faut mettre vu que c'est un type anonyme...

    Je viens donc quémander des idées.

    Merci d'avance !
    Kropernic

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu peux faire une classe avec toutes ces propriétés, et faire un select new machin with {... idem}
    ta classe n'est plus anonyme mais au moins elle est utilisable

    sinon faire une sub dans la sub (new action() sub () code end sub ())).invoke
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    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
    J'aurais aimé pouvoir me passer de créer une classe de plus juste pour faire un affichage.

    Pourrais-tu développer un peu plus ton histoire de sub dans une sub ?? J'ai pas bien compris (encore jamais fait ça).

    Ou m'indiquer des mots clefs pour demander à google.

    Sinon, je viens de trouver que, en C#, on peut utiliser le type Dynamic mais il n'y a apparemment pas d'équivalent en VB. C'est la première fois que je tombe sur un truc faisable en C# et pas en VB .
    Kropernic

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Au début Pol63 proposait de créer une classe contenant plutôt les filtre que l'objet en lui même. Ce qui revient au même.

    Pas trop suivi sur le New Sub Invoke (il faudrait que je me penche dessus).

    Sinon, à la question initiale, le type "mère" qui peut tout contenir est le type Object.

    Si tu stockes un objet de type Type1 et que tu souhaites accéder a ses propriétés, alors il faudra faire un (Direct)Cast dessus pour qu'il l'objet retrouve son type d'origine.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    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
    Sauf que si je fais Dim data As Object, je vais pouvoir lui filer la query mais c'est mort pour appliquer les filtres après. Vu qu'il s'agit d'un type anonyme, hors de question de faire un cast .
    Kropernic

  6. #6
    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
    Autre possibilité, parvenir à convertir data.ToList en BindingList ^^.

    Vu qu'en fait c'est pour pouvoir faire des tris sur les colonnes d'un DataGridView, si je parviers à lui passer un objet qui implémente IBindingList, ça marche aussi. Et plus besoin de data en variable de classe dans ce cas.

    Mais pareil que pour la question originelle, je sèche...
    Kropernic

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    une méthode anonyme c'est un peu le même principe qu'un type anonyme, ca n'a pas de nom, mais ca existe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim v as string = ""
    dim m as new action(sub()
                           v = "nouvelle valeur"
                        End Sub)
    m.invoke
    v est utilisable car la compilation fait que ca s'occupe de tout
    mais pendant le développement ca fait comme si c'était dans le même scope (portée)
    donc ton type anonyme devrait être utilisable

    ceci n'est faisable qu'à partir de vs 2010
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    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
    Je comprends la théorie mais en pratique, je ne vois pas comment appliquer cela à mon problème...

    En quoi cela me permet d'avoir accès à data ailleurs que dans la sub où elle est déclarée??

    Y a forcément un truc qui m'échappe, sorry... :-/
    Kropernic

  9. #9
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Bonjour,
    Je ne sais pas si ça peut t'aider, mais j'ai lu ça:
    L'équivalent est 'object' en VB.NET mais avec 'Option Strict Off'.
    Avec 'Option Strict On' il n'y a pas d'équivalent.
    Autrement dit en VB.net, avec 'Option Strict Off', 'object' est l'équivalent du mot-clé 'dynamique' en C#.
    Nom : Sans.jpg
Affichages : 365
Taille : 49,7 Ko
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  10. #10
    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
    Citation Envoyé par ACIVE_CS Voir le message
    Bonjour,
    Je ne sais pas si ça peut t'aider, mais j'ai lu ça:


    Nom : Sans.jpg
Affichages : 365
Taille : 49,7 Ko
    Citation Envoyé par Kropernic Voir le message
    Sauf que si je fais Dim data As Object, je vais pouvoir lui filer la query mais c'est mort pour appliquer les filtres après. Vu qu'il s'agit d'un type anonyme, hors de question de faire un cast .
    Kropernic

  11. #11
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu disais au début que tu voulais l'utiliser dans une autre sub
    et en déplacant le code de cette autre sub dans la méthode anonyme ca fonctionnera, par contre en effet ca ne rend pas utilisable partout, juste dans la sous sub
    donc oui ce n'est pas une méthode miracle, mais depuis le temps qu'on en discute, tu aurais écris cette petite classe de 5 lignes ca serait déjà fini ^^

    quand à option explicit off, ce n'est pas génial, et ca bascule tout le fichier, quand dynamic agit pour une variable
    reste à espérer que celui ci apparaisse dans la version 2015 ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    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
    Citation Envoyé par Pol63 Voir le message
    tu disais au début que tu voulais l'utiliser dans une autre sub
    et en déplacant le code de cette autre sub dans la méthode anonyme ca fonctionnera, par contre en effet ca ne rend pas utilisable partout, juste dans la sous sub
    Oui mais la sous sub va être dans la sub de départ donc je ne comprends pas ce que cela change...

    La finalité du truc est de pouvoir faire un tri lors d'un clique sur un DataGridViewColumnHeader.
    Histoire d'avoir quelque chose de concret, voici le code que j'ai jusqu'ici :
    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
        Private Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click
            Dim data = (From d In Promo.DTO.DetailsDemo
                        Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo = d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType).Concat(
                        From d In Promo.DTO.DetailsDepartment
                        Select Id = d.Id, Department = d.Department, CodeDemo = CType(Nothing, PROMO_DTO.CodeDemo), Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType)
     
            If ckbDepartment.Checked Then
                data = (From d In data
                        Where d.Department.Id = CShort(cbDepartment.SelectedValue)
                        Select d)
            End If
     
            If ckbConcession.Checked Then
                data = (From d In data
                        Where d.CodeDemo.Id = CInt(cbConcession.SelectedValue)
                        Select d)
            End If
     
            If ckbPercent.Checked Then
                data = (From d In data
                        Where d.Percentage = nudPercent.Value
                        Select d)
            End If
     
            Dim bs As New BindingSource
            bs.DataSource = data.ToList
     
            dgvDemo.DataSource = data
        End Sub
     
        Private Sub dgvDemo_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvDemo.ColumnHeaderMouseClick
            Dim order As SortOrder = dgvDemo.Columns(e.ColumnIndex).HeaderCell.SortGlyphDirection
            If order = SortOrder.None OrElse order = SortOrder.Descending Then
                dgvDemo.Sort(dgvDemo.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Ascending)
            Else
                dgvDemo.Sort(dgvDemo.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Descending)
            End If
        End Sub
    En l'état, ça plante sur les .Sort car data n'implémente pas IBindingList. Du coup, je voulais utiliser .OrderBy sur data et refiler ma liste en datasource du DGV (même si ça va être chiant car va falloir écrire le code adéquat pour chaque colonne).

    J'arrive pas à comprendre comment la sub anonyme vient m'aider dans ce bordel.
    Citation Envoyé par Pol63 Voir le message
    donc oui ce n'est pas une méthode miracle, mais depuis le temps qu'on en discute, tu aurais écris cette petite classe de 5 lignes ca serait déjà fini ^^
    C'est pas faux mais bon, ça me permet de creuser un truc que je ne connais pas. (même si c'est probablement ce que je finirai par faire, j'aime bien aller au fond des choses)
    Citation Envoyé par Pol63 Voir le message
    quand à option explicit off, ce n'est pas génial, et ca bascule tout le fichier, quand dynamic agit pour une variable
    reste à espérer que celui ci apparaisse dans la version 2015 ...
    De fait, rien que de devoir mettre Option Strict Off fait que je n'ai pas envie d'utiliser cela. J'espère aussi pour la version 2015.
    Kropernic

  13. #13
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Hello,

    Voici une Sub d'un formulaire.
    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
        Private Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click
            Dim data = (From d In Promo.DTO.DetailsDemo
                        Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo = d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType).Concat(
                        From d In Promo.DTO.DetailsDepartment
                        Select Id = d.Id, Department = d.Department, CodeDemo = CType(Nothing, PROMO_DTO.CodeDemo), Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType)
     
            If ckbDepartment.Checked Then
                data = (From d In data
                        Where d.Department.Id = CShort(cbDepartment.SelectedValue)
                        Select d)
            End If
     
            If ckbConcession.Checked Then
                data = (From d In data
                        Where d.CodeDemo.Id = CInt(cbConcession.SelectedValue)
                        Select d)
            End If
     
            If ckbPercent.Checked Then
                data = (From d In data
                        Where d.Percentage = nudPercent.Value
                        Select d)
            End If
     
            dgvDemo.DataSource = data.ToList
        End Sub
    Ce que je cherche à faire est de déclarer data en tant que variable de classe histoire de pouvoir l'utiliser dans une autre Sub tout en gardant les filtres s'il y en a eu.

    Par contre, il faut lui donner un type du coup à cette variable. Et c'est là que je coince. Aucune idée de ce qu'il faut mettre vu que c'est un type anonyme...

    Je viens donc quémander des idées.

    Merci d'avance !
    La définition d'un type anonyme est justement que celui-ci n'est connu que dans le scope de la fonction ou il est déclarer. Sinon ce n'est plus un type anonyme. Tu ne peux pas faire ce que tu demande, c'est sa définition même.

    en revanche tu peux faire de la réfléxion ou utiliser un type dynamic.
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  14. #14
    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
    Hello,

    J'ai finalement résolu mon souci comme ceci :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
        Private _dicFilter As Dictionary(Of Filter, Decimal)
        Private Enum Filter As Integer
            Department = 1
            Demo = 2
            Percent = 3
        End Enum
     
        Private Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click
            _dicFilter = New Dictionary(Of Filter, Decimal)
     
            If ckbDepartment.Checked Then
                _dicFilter.Add(Filter.Department, CShort(cbDepartment.SelectedValue))
            End If
     
            If ckbConcession.Checked Then
                _dicFilter.Add(Filter.Demo, CInt(cbConcession.SelectedValue))
            End If
     
            If ckbPercent.Checked Then
                _dicFilter.Add(Filter.Percent, nudPercent.Value)
            End If
     
            FilterAndSortData(_dicFilter)
        End Sub
     
        Private Sub FilterAndSortData(filters As Dictionary(Of Filter, Decimal), Optional ByVal PropertyToSort As String = Nothing, Optional ByVal sortorder As SortOrder = Nothing)
            Dim data = (From d In Promo.DTO.DetailsDemo
                       Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo = d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType).Concat(
                       From d In Promo.DTO.DetailsDepartment
                       Select Id = d.Id, Department = d.Department, CodeDemo = CType(Nothing, PROMO_DTO.CodeDemo), Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType)
     
            If Not IsNothing(filters) Then
                For Each key As Filter In filters.Keys
                    Select Case key
                        Case Filter.Department
                            data = (From d In data
                                    Where d.Department.Id = _dicFilter(key)
                                    Select d)
                        Case Filter.Demo
                            data = (From d In data
                                    Where d.CodeDemo.Id = _dicFilter(key)
                                    Select d)
                        Case Filter.Percent
                            data = (From d In data
                                    Where d.Percentage = _dicFilter(key)
                                    Select d)
                    End Select
                Next
            End If
     
     
            If Not IsNothing(PropertyToSort) Then
                If sortorder = Windows.Forms.SortOrder.Ascending Then
                    Select Case PropertyToSort
                        Case "Department"
                            data = data.OrderBy(Function(x) x.Department.Code)
                        Case "CodeDemo"
                            data = data.OrderBy(Function(x) x.CodeDemo.Code)
                        Case "Percentage"
                            data = data.OrderBy(Function(x) x.Percentage)
                        Case "Description"
                            data = data.OrderBy(Function(x) x.Description)
                        Case "Note"
                            data = data.OrderBy(Function(x) x.Note)
                        Case "ListType"
                            data = data.OrderBy(Function(x) x.ListType)
                    End Select
                ElseIf sortorder = Windows.Forms.SortOrder.Descending Then
                    Select Case PropertyToSort
                        Case "Department"
                            data = data.OrderByDescending(Function(x) x.Department.Code)
                        Case "CodeDemo"
                            data = data.OrderByDescending(Function(x) x.CodeDemo.Code)
                        Case "Percentage"
                            data = data.OrderByDescending(Function(x) x.Percentage)
                        Case "Description"
                            data = data.OrderByDescending(Function(x) x.Description)
                        Case "Note"
                            data = data.OrderByDescending(Function(x) x.Note)
                        Case "ListType"
                            data = data.OrderByDescending(Function(x) x.ListType)
                    End Select
                End If
            End If
     
            dgvDemo.DataSource = data.ToList
        End Sub
     
        Private Sub dgvDemo_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvDemo.ColumnHeaderMouseClick
            Dim order As SortOrder = dgvDemo.Columns(e.ColumnIndex).HeaderCell.SortGlyphDirection
            If order = SortOrder.None OrElse order = SortOrder.Descending Then
                FilterAndSortData(_dicFilter, dgvDemo.Columns(e.ColumnIndex).DataPropertyName, SortOrder.Ascending)
                dgvDemo.Columns(e.ColumnIndex).HeaderCell.SortGlyphDirection = SortOrder.Ascending
            Else
                FilterAndSortData(_dicFilter, dgvDemo.Columns(e.ColumnIndex).DataPropertyName, SortOrder.Descending)
                dgvDemo.Columns(e.ColumnIndex).HeaderCell.SortGlyphDirection = SortOrder.Descending
            End If
        End Sub
    Kropernic

  15. #15
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    de toute façon tant qu'on reste dans du code trop concret on est obligé d'y rester (ca ne veut rien dire )
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Variable statique de meme type que la classe qui la contient
    Par MSN9149 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 09/02/2012, 10h38
  2. Comment exploiter une variable d'une classe de type JFrame
    Par kamala dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 01/07/2011, 16h35
  3. débutant:utilisation de variable entre classe
    Par troojan dans le forum MFC
    Réponses: 1
    Dernier message: 07/12/2005, 23h31
  4. Réponses: 6
    Dernier message: 23/09/2005, 12h54
  5. Variable globale - PL/SQL - %TYPE
    Par ogre dans le forum PL/SQL
    Réponses: 25
    Dernier message: 20/10/2004, 13h47

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