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

ASP.NET Discussion :

Tri sur un DataGrid


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 61
    Points : 52
    Points
    52
    Par défaut Tri sur un DataGrid
    Bonjour à vous tous,

    J'ai un problème qui, ma fois, commence à me les casser . Mais tout d'abord, laissez moi vous dire que le Framework utilisé est 1.1, sous VS 2003.

    J'essais de faire fonctionner les options de tri sur un DataGrid. Pour ce faire, j'ai un dataset nommé "dsAffichage", défini comme DataSource sur mon DataGrid. Lors d'un clique sur un bouton, je rempli cette DataGrid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private Sub btnAfficher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfficher.Click
      If Page.IsValid Then
        Me.dsAffichage = GenererData()    
        grilleAffichage.DataBind()
        panelResultat.Visible = True
      End if
     End Sub
    (Ma Grid a la propriété "AllowSorting" à true, et le Viewstate est à true aussi)

    Jusque là, les données s'affichent.

    Donc, une fois avoir défini mes colonnes de tri, je les gère avec l'évênement SortCommand sur la grille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     Private Sub grilleAffichage_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles grilleAffichage.SortCommand
      Dim arg as String = e.SortExpression
     
      Select Case arg
       Case "NomIntervenant"
        Me.dsAffichage.Tables("Formulaire").DefaultView.Sort = "NomEmplInterv Asc"  
    End Select  
     End Sub

    Or, les données ne sont pas triées! Même si je force un nouveau .DataBind() sur la grille, ça ne fonctionne pas. J'ai tracé et ma commande .Sort est bel et bien exécutée, mais elle n'a pas d'effet sur le DataSet (donc non plus sur la grille).

    Et voici comment mon binding est fait (image attachée)

    Quelqu'un aurait une piste pour moi?
    Merci beaucoup!
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Tu dois resetter la datasource avec la view de ton datagrid trié

  3. #3
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Tu dois resetter la datasource avec la view de ton datagrid trié
    Lorsque je fais ça, de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Me.dsAffichage.Tables("Formulaire").DefaultView.Sort = "NomEmplInterv Asc"
        grilleAffichage.DataSource = Me.dsAffichage.Tables("Formulaire").DefaultView
        grilleAffichage.DataBind()
    Elle est toujours non-triée.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    T'as vérifié que Me.dsAffichage.Tables("Formulaire").DefaultView n'est pas vide?

  5. #5
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    Ouaip, elle n'est pas vide.

    J'ai vu que avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim dr as DataRow
        Dim concat as String = ""
        For each dr in Me.dsAffichage.Tables("Formulaire").DefaultView.Table.Rows
         concat = concat & CType(dr("NomEmplInterv"), String) & vbNewLine
        Next
    Les valeurs dans Me.dsAffichage.Tables("Formulaire").DefaultView ne sont même pas triées, comme le témoigne ma capture d'écran.
    Images attachées Images attachées  

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ok

    Un truc qui me revient. Je suis pas sûr qu'on puisse DataBinder une DefaultView.
    Essaye en créant une DataTable, en la remplissant avec les données de ta view et en la databindant sur ton datagrid

  7. #7
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    Good, ça vaut la peine de l'essayer lundi.

    En passant, merci beaucoup pour les pistes.

    À suivre...

  8. #8
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    Résolu: Il faut binder le DataGrid sur un DataTable, récupéré à partir du DefaultView.Table du DataView, et c'est ce DataTable qui doit être trié.

    Merci!

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

Discussions similaires

  1. Tri sur la datagrid
    Par zaineb.z dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/05/2009, 16h48
  2. [C#] Problème de tri sur datagrid
    Par arnauann dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 02h24
  3. Enlever le tri sur les en-tête d'un DataGrid
    Par Destiny dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/03/2007, 14h28
  4. [VB.NET] Problème de tri sur Datagrid/gridview multilingue
    Par crimsonPhantom dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/03/2006, 22h41
  5. [c#] tri sur datagrid
    Par lapartdombre dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/01/2006, 17h32

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