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 :

Conservation du Tri d'un DataGridView après rechargement de celui-ci [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 70
    Points : 75
    Points
    75
    Par défaut Conservation du Tri d'un DataGridView après rechargement de celui-ci
    Bonjour,

    Je viens de mettre en test le module de mon application, et un utilisateur m'a fait remarqué que cela serait agréable que la grille reste triée dans le sens voulu même après modification de son contenu.
    "Pas bête !" ... "Mais pas facile "

    Mon problème principal est que mon dataGridView est généré entièrement via le code (code que voici)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim oConnection As New OleDbConnection(My.Settings.ChaineCnx)          
    Dim strRequete As String = ""
    'Je vous épargne la requête qui s'étale sur une vingtaine de ligne :p
     
    Dim oCmdSQL As New OleDbCommand(strRequete, oConnection)
                Dim oDataAdapter As New OleDbDataAdapter(oCmdSQL)
                Dim oDataSet As New DataSet
     
    oDataAdapter.Fill(oDataSet, "Liste_Individuelle_Classement_Produit")
                Me.DGV_LISTEIND.DataSource = oDataSet.Tables("Liste_Individuelle_Classement_Produit")
     
    'Quelques modifications de tailles de colonnes
    'Selection de la 1ere ligne par defaut
    Et donc ceci, appelé par une fonction, doit être réeffectué à chaque changement dans la base de donnée pour pouvoir actualiser l'affichage.

    Le problème qui se pose donc est : Comment conserver le Tri qui était choisis avant qu'on recharge le DataGridView ?

    J'avais eu une lueur d'espoir en découvrant ces propriétés et en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            'Récupération du Tri actuel du DataGridView
            Dim oColumn As DataGridViewColumn = Me.DGV_LISTESPRODUITS.SortedColumn
            Dim oSort As SortOrder = Me.DGV_LISTESPRODUITS.SortOrder
     
            'Chargement du DataGridView
            If ChargerDataGridViewListesProduits() = 0 Then
                MsgBox("Erreur lors du chargement de la fenêtre.", 16, "Erreur")
                Exit Sub
            End If
     
            'Réaffectation des tri présent avant le rechargement du DataGridView
            Me.DGV_LISTESPRODUITS.Sort(oColumn, oSort)
    Malheuresement, la colonne présente avant et après n'est pas la même, vu qu'entre temps il y à eu une suppression d'enregistrement. J'ai également tenté de modifié les propriétés pour m'appercevoir qu'elles sont ReadOnly !

    Quelqu'un aurait-il une idée?
    Peut-être un élément tel le "FindStringExact" des ComboBox existe pour les DataGridView? Mais au niveau des header.

    Merci d'avance pour vos éventuelles pistes

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 70
    Points : 75
    Points
    75
    Par défaut
    Bon, une bonne nouvelle

    J'ai continué mes investigations, et j'ai fais des recherches sur le rapport entre le type SortOrder et le type ListSortDirection. Je suis tombé sur un jolie post en anglais avec un exemple intéressant que voici :

    IcI

    Il suffit d'assigner la valeur du Tri dans la fonction Sort en Brut, en fonction de la valeur du SortOrder grâce à un If ou un Select Case
    (Au cas ou je n'ai pas été clair, voila ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            Dim strColumn As String = Me.DGV_LISTEIND.SortedColumn.HeaderText
            Dim oSort As SortOrder = Me.DGV_LISTEIND.SortOrder
     
     
    'Rechargement du DataGridView
     
           If Me.DGV_LISTEIND.Columns.Contains(strColumn) = True Then
                Dim oColumn As DataGridViewColumn = Me.DGV_LISTEIND.Columns(strColumn)
                If oSort = SortOrder.Ascending Then
                    Me.DGV_LISTEIND.Sort(oColumn, ComponentModel.ListSortDirection.Ascending)
                ElseIf oSort = SortOrder.Descending Then
                    Me.DGV_LISTEIND.Sort(oColumn, ComponentModel.ListSortDirection.Descending)
                End If
            End If
    En espérant que ceci pourra aider les prochains qui rencontreront ce problème

    Sujet résolu, merci quand même à vous et désolé du dérangement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/10/2012, 09h11
  2. Lancer une procedure après un tri sur ne datagridview
    Par Au2laDeNosReves dans le forum VB.NET
    Réponses: 8
    Dernier message: 07/10/2009, 15h31
  3. Réponses: 9
    Dernier message: 20/08/2008, 17h16
  4. Réponses: 1
    Dernier message: 22/08/2007, 13h56
  5. Réponses: 6
    Dernier message: 15/01/2007, 16h05

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