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 :

comment trier un gridview ?


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2005
    Messages : 1 301
    Points : 1 129
    Points
    1 129
    Par défaut comment trier un gridview ?
    Bonjour,

    ma question est très simple, mais j'ai une erreur...

    • j'ai converti une de mes boundcolumn en templatecolumn.
    • j'ai ensuite mis la propriété de mon gridview en Allowsorting à true.
    • puis dans les propriétés de ma colonne template j'ai mis "[nomduchamp]"

    mais lorsque je click sur mon titre de gridview pour faire le tri, j'ai ce message d'erreur-ci:

    The GridView 'GridView_planning' fired event Sorting which wasn't handled

  2. #2
    Membre régulier Avatar de royto
    Homme Profil pro
    Développeur .Net & Web
    Inscrit en
    mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .Net & Web

    Informations forums :
    Inscription : mai 2005
    Messages : 92
    Points : 96
    Points
    96
    Par défaut
    As tu pensez a définir la fonction de tri a appeler : OnSortCommand="MafonctionDeTri"

  3. #3
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2005
    Messages : 1 301
    Points : 1 129
    Points
    1 129
    Par défaut
    Citation Envoyé par royto
    As tu pensez a définir la fonction de tri a appeler : OnSortCommand="MafonctionDeTri"

    je n'ai rien fais de plus que ce que j'ai dis...

    pourquoi devrais je créer une fonction de tri?

    d'après msnd le tri se fait sans coder

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2006
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Il faut que tu récupère le DataView de ta gridview. Ensuitre, dans l'évènement Sorting de ta Gridview, tu récupères la colonne qui a été cliqué, tu trie le DataView et tu le réaffecte à ta gridview.

    En fait, il n'y a pas besoin de coder le tri, quand la source provient d'un sqldatasource, xmldatasource ou objectdatasource. Si tu crées toi même la source de donnée, tu dois toi même gérer le tri.
    Life is short, ride hard !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2006
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        private SortDirection GridViewSortDirection
        {
            get
            {
                if (ViewState["sortDirection"] == null)
                    ViewState["sortDirection"] = SortDirection.Descending;
                return (SortDirection)ViewState["sortDirection"];
            }
            set { ViewState["sortDirection"] = value; }
        }
    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
         protected void GridView1_Sorting(object sender, System.Web.UI.WebControls.GridViewSortEventArgs e)
        {
            String sens;
            if (GridViewSortDirection == SortDirection.Descending)
            {
                GridViewSortDirection = SortDirection.Ascending;
                sens = "desc";
            }
            else
            {
                GridViewSortDirection = SortDirection.Descending;
                sens = "asc";
            }
     
     
            DataView dv = (DataView) GridView1.DataSource;
            dv.Sort = e.SortExpression + " " + sens;
     
            GridView1.DataSource = dv;
            GridView1.DataBind();
     
        }
    Life is short, ride hard !

  6. #6
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2005
    Messages : 1 301
    Points : 1 129
    Points
    1 129
    Par défaut
    Merci pour ta réponse, mais il coince au niveau de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dv.Sort = e.SortExpression
    en me disant cela:
    Object reference not set to an instance of an object.


  7. #7
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Normal, la propriété DataSource n'est pas stockée.
    Il faut que tu bosses directement sur la source de données, sans essayer de la récupérer depuis le contrôle.

  8. #8
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2005
    Messages : 1 301
    Points : 1 129
    Points
    1 129
    Par défaut
    Citation Envoyé par Mose
    Normal, la propriété DataSource n'est pas stockée.
    Il faut que tu bosses directement sur la source de données, sans essayer de la récupérer depuis le contrôle.

    ok merci, j'ai utilisé une session pour stocker le datasource et cela fonctionne

  9. #9
    Nouveau membre du Club
    Inscrit en
    juillet 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 30
    Points : 29
    Points
    29
    Par défaut et pour le DataList
    Citation Envoyé par Sensei.f
    Il faut que tu récupère le DataView de ta gridview. Ensuitre, dans l'évènement Sorting de ta Gridview, tu récupères la colonne qui a été cliqué, tu trie le DataView et tu le réaffecte à ta gridview.

    En fait, il n'y a pas besoin de coder le tri, quand la source provient d'un sqldatasource, xmldatasource ou objectdatasource. Si tu crées toi même la source de donnée, tu dois toi même gérer le tri.
    Bonjour,
    j'essaye moi aussi desespérement de générer un tri dynamiquement sur mon objectdatasource.
    Par exemple, j'ai select nom, prenom from table
    Je souhaite ajouter lors du clic sur un bouton, un tri du genre "order by nom".
    Je n'ai rien trouvé pour le moment sur ce sujet !
    Merci par avance

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

Discussions similaires

  1. [VB.Net 2.0] Comment trier un GridView ?
    Par Dadou74 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 27/09/2006, 17h33
  2. Réponses: 4
    Dernier message: 17/05/2006, 15h11
  3. [C#] Comment trier un GridView ?
    Par Allen dans le forum ASP.NET
    Réponses: 4
    Dernier message: 26/04/2006, 15h50
  4. Comment trier une DBGRID en cliquant sur une colonne
    Par sessime dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/10/2004, 16h18
  5. Paradox 7 Comment trier et marquer données dans une DBgrid
    Par technico dans le forum Bases de données
    Réponses: 12
    Dernier message: 04/07/2004, 11h08

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