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 :

Lancer une procedure après un tri sur ne datagridview


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 56
    Points
    56
    Par défaut Lancer une procedure après un tri sur ne datagridview
    Bonjour,

    Voici mon soucis, j'ai un datagridview qui récupère les données sur un serveur SQL, avec des filtres et des couleurs selon les lignes pour une meilleur visibilité.

    ça fait deux heures que je cherche sur le net comment résoudre le soucis suivant :

    J'ai donc mon Datagridview qui s'affiche avec toutes mes données,
    je veux faire un trie sur une des colonnes, d'accord c'est trié mais que vois je ?

    Toutes les couleurs ont disparu obliger de recharger la page, ou de créer une procédure si un clique sur le tableau on met les couleurs à la rigueur mais sa consomme de la ressource pour rien je trouve.

    Donc mon but serais que quand je lance un tri en utilisant la colonne souhaité bah que je puis lancer une procédure de recalculer les couleurs.

    Donc je vous demande si vous auriez des idées s'il vous plait ?

    Je suis sous Visual Studio 2008

    Merci.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    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 172
    Points : 25 112
    Points
    25 112
    Par défaut
    il existe l'évènement Sorted qui t'averti qu'un tri vient d'être effectué
    donc placer le code pour remettre les couleurs à cet endroit ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Il faut être conscient qu'il n'existe AUCUN moyen de conserver les attributs des Rows d'un DataGridView lors d'un tri, sauf à créer une colonne spéciale éventuellement masquée.

    Comme te le dis Pol63, tu devras recalculer les couleurs après le tri.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 56
    Points
    56
    Par défaut
    Coucou,

    Désolé du retard, oui justement j'aimerais que les couleurs se remettent un tris et donc je voudrais faire appel à cette fonction après un trie.

    J'ai déjà essayé un event sorted mais bizarrement il se lance pas après un tri

    J'avais essayé un truc du genre mais bon comme je débute il doit me manquer quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub MyDataGridViewNew_ColumnSortModeChanged(ByVal sender As Object, ByVal e As EventArgs) Handles MyDataGridViewNew.ColumnSortModeChanged
            MsgBox("Test")
        End Sub

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Ceci marche parfaitement chez moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    GridView.Sorted   += new EventHandler(GridView_Sorted);
    ...
    internal void GridView_Sorted(object sender, EventArgs e)
    {
      // Ici, tes actions après le Sort 
      // (chez moi, c'est se repositionner sur la même row qu'avant le tri)
    }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Points : 47
    Points
    47
    Par défaut
    Salam,

    Je peux savoir comment tu colories tes rows ou tes columns, parceque moi j'ai pas ce soucis.

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    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 172
    Points : 25 112
    Points
    25 112
    Par défaut
    normalement c'est datagridview.rows(y).cells(x).defaultcellstyle.backcolor ou un truc dans le genre ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 56
    Points
    56
    Par défaut
    Voici un exemple de mon code pour les couleurs

    C'est pas très optimisé mais c'est rapide lol

    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 ColorMyDataGrid()
            'Couleur des Priorité
            For i As Integer = 0 To Me.MyDataGridViewNew.Rows.Count - 1
                If CType(Me.MyDataGridViewNew.Rows(i).Cells.Item(1).Value, Integer) <> CType(DatePart(DateInterval.WeekOfYear, Date.Today), Integer) And Me.MyDataGridViewNew.Rows(i).Cells.Item(0).Value.ToString <> "TER" And Me.MyDataGridViewNew.Rows(i).Cells.Item(0).Value.ToString <> "ANN" And Me.MyDataGridViewNew.Rows(i).Cells.Item(0).Value.ToString <> "RET" Then
                    If CType(Me.MyDataGridViewNew.Rows(i).Cells.Item(1).Value, Integer) = CType(DatePart(DateInterval.WeekOfYear, Date.Today), Integer) - 1 Then
                        Me.MyDataGridViewNew.Item(0, i).Style.BackColor = Color.Green
                    ElseIf CType(Me.MyDataGridViewNew.Rows(i).Cells.Item(1).Value, Integer) = CType(DatePart(DateInterval.WeekOfYear, Date.Today), Integer) - 2 Then
                        Me.MyDataGridViewNew.Item(0, i).Style.BackColor = Color.Orange
                    ElseIf CType(Me.MyDataGridViewNew.Rows(i).Cells.Item(1).Value, Integer) <= CType(DatePart(DateInterval.WeekOfYear, Date.Today), Integer) - 3 Then
                        Me.MyDataGridViewNew.Item(0, i).Style.BackColor = Color.Red
                    End If
                End If
                Select Case CStr(Me.MyDataGridViewNew.Rows(i).Cells.Item(0).Value)
                    Case "ANN"
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.BackColor = Color.Black
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.ForeColor = Color.White
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.Font = New Font(Me.MyDataGridViewNew.Font, FontStyle.Strikeout)
                        Me.MyDataGridViewNew.Item(0, i).Value = "ANNULE"
                    Case "TER"
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue
                        Me.MyDataGridViewNew.Item(0, i).Value = "TERMINE"
                    Case "RET"
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.BackColor = Color.Yellow
                        Me.MyDataGridViewNew.Item(0, i).Value = "RETOUR"
                    Case "URG"
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.BackColor = Color.OrangeRed
                        Me.MyDataGridViewNew.Item(0, i).Value = "URGENT"
                    Case "SFX"
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.BackColor = Color.GreenYellow
                        Me.MyDataGridViewNew.Item(0, i).Value = "SEM FIXE"
                    Case "ATT"
                        Me.MyDataGridViewNew.Item(0, i).Value = "EN ATTENTE"
                    Case "ENC"
                        Me.MyDataGridViewNew.Rows(i).DefaultCellStyle.Font = New Font(Me.MyDataGridViewNew.Font, FontStyle.Italic)
                        Me.MyDataGridViewNew.Item(0, i).Value = "EN COURS"
                End Select
            Next
        End Sub

  9. #9
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    normalement c'est datagridview.rows(y).cells(x).defaultcellstyle.backcolor ou un truc dans le genre ...
    C'est exactement ce que je fait et cela ne me donne aucun problème.

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

Discussions similaires

  1. [VBA-E]Lancer une procédure à un moment T
    Par Pl4ymo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/11/2006, 20h36
  2. Lancer une procedure par selection de cellule
    Par Kaory dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/06/2006, 17h04
  3. lancer une procedure toutes les minutes precisemment
    Par Alextk dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/06/2006, 15h10
  4. Réactiver une procedure après désactivation
    Par nou366 dans le forum Delphi
    Réponses: 3
    Dernier message: 29/05/2006, 13h54
  5. Réponses: 4
    Dernier message: 10/03/2006, 17h25

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