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 dans l'en-tête d'un GridView


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2011
    Messages : 66
    Points : 76
    Points
    76
    Par défaut Tri dans l'en-tête d'un GridView
    Bonjour,

    Je développe une application web en asp.net C#.
    Plusieurs de mes pages contiennent des GridView qui sont rempli à l'aide d'ObjetDataSource (ODS_FICHE). Mon objectif c'est de permettre à l'utilisateur de pouvoir faire un tri sur la colonne de sont choix en cliquant sur l'en tête de la colonne par exemple.

    Voici l'une d'elles sans ce tri :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <asp:GridView ID="GV_FICHE" runat="server" AutoGenerateColumns="False" DataSourceID="ODS_FICHE"
            EnableModelValidation="True" EnableViewState="False" CssClass="tableau">
            <Columns>
                <asp:HyperLinkField DataNavigateUrlFields= "PieceJointefiche" DataTextField="Libellefiche"
                    HeaderText="Intitulé" Target="_blank" 
                    DataNavigateUrlFormatString="~/PieceJointe/{0}"/>
                <asp:BoundField DataField="Codefiche" HeaderText="Code Emploi" SortExpression="Codefiche" />
                <asp:BoundField DataField="LibelleClasification" HeaderText="Classification" SortExpression="LibelleClasification" />
            </Columns>
        </asp:GridView>
    Jusque la ça marche.

    Je ne suis pas arrivé les mains vide, j'ai trouvé quelque trucs dont ce bout de code qui ajoute un bouton dans l'en tête grâce à la colonne de type TemplateField et qui appelle une procédure (que je dois aussi faire ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <asp:TemplateField>
    <HeaderTemplate>
        <asp:Button runat="server" ID="BT_ID" CommandName="BTClicked"/>
    </HeaderTemplate>
    <ItemTemplate>
        <asp:Literal runat="server" ID="ID" Text='<%# Eval("Id") %>'> ></asp:Literal>
    </ItemTemplate>
    </asp:TemplateField>
    Pour la colonne ID c'est ok ! Mais je n'arrive pas a faire la colonne du lien. Il faudrait faire un "mix" entre HyperLinkField et TemplateField.

    Si c'est pas la bonne voie j'écoute vos solution

    Merci par avance,

  2. #2
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Citation Envoyé par Dewey12 Voir le message
    Il faudrait faire un "mix" entre HyperLinkField et TemplateField.
    Il ne faut aucun des deux.


    Mets cette propriété à ton gridview

    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2011
    Messages : 66
    Points : 76
    Points
    76
    Par défaut
    Merci,

    J'ai donc explorer cette voie.
    Malheureusement, cela ne marche pas tout a fait puisque j'ai ce message d'erreur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La source de données 'ODS_FICHE' ne prend pas en charge le tri de données IEnumerable. Le tri automatique n'est pris en charge qu'avec DataView, DataTable et DataSet.
    Mon Objet data source ce sert d'une classe AccesDonneFiche qui me retourne une List<FicheClass>. Je pense que le problème est la mais je vois pas trop comment le résoudre ?!

    Sinon j'ai ce code trouvé sur le net que j'ai adapté vu que j'ai un ObjectDataSource.

    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
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ViewState["sortOrder"] = "";
                    bindGridView("", "");
                }  
            }
     
            protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
            {
                bindGridView(e.SortExpression, sortOrder);
            }
     
            public void bindGridView(string sortExp, string sortDir)
            {
     
                if (sortExp != string.Empty)
                {
                    // Passage de parametre de la valeur order by "idfiche" "DESC"
                    ODS_FICHE.SelectParameters[7].DefaultValue = sortExp;
                    ODS_FICHE.SelectParameters[8].DefaultValue = sortDir;
                }
            }
     
            public string sortOrder
            {
                get
                {
                    {
                        if (ViewState["sortOrder"].ToString() == "desc")
                        {
                            ViewState["sortOrder"] = "asc";
                        }
                        else
                        {
                            ViewState["sortOrder"] = "desc";
                        }
                    }
                    return ViewState["sortOrder"].ToString();
                }
                set
                {
                    ViewState["sortOrder"] = value;
                }
            }

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Je pense que tu devras surement implémenté toi même ta méthode de tri, c'est ce que j'ai du faire comme j'étais bindé sur une liste.

    Et ce bout de code marche ?

Discussions similaires

  1. Tri dans une gridview
    Par ERICLEUN dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/12/2012, 11h27
  2. Tri dans un gridview
    Par baldebaran dans le forum SharePoint
    Réponses: 2
    Dernier message: 01/04/2009, 09h28
  3. Erreur lors du tri dans un gridview
    Par Fngonka dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/02/2009, 10h18
  4. Réponses: 5
    Dernier message: 19/11/2007, 11h04
  5. [langage] tri dans tableau de hachage
    Par mimilou dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2004, 16h10

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