Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Web avec .NET > ASP.NET
ASP.NET ASP.NET -Forum d'entraide sur le Développement Web en ASP.NET. Avant de poster -> FAQ ASP.NET, Articles ASP.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/12/2012, 13h58   #1
Dewey12
Nouveau Membre du Club
 
Homme Cédric
Développeur .NET
Inscription : septembre 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : septembre 2011
Messages : 55
Points : 31
Points : 31
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 :
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 :
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,
Dewey12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 10h32   #2
bossun
Membre Expert
 
Avatar de bossun
 
Inscription : novembre 2002
Messages : 1 332
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2002
Messages : 1 332
Points : 1 250
Points : 1 250
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
bossun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 09h49   #3
Dewey12
Nouveau Membre du Club
 
Homme Cédric
Développeur .NET
Inscription : septembre 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : septembre 2011
Messages : 55
Points : 31
Points : 31
Merci,

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

Code :
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 :
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;
            }
        }
Dewey12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 11h48   #4
youtpout978
Membre Expert
 
Homme John Doe
Développeur .NET
Inscription : novembre 2010
Messages : 911
Détails du profil
Informations personnelles :
Nom : Homme John Doe
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : novembre 2010
Messages : 911
Points : 1 457
Points : 1 457
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 ?
youtpout978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h09.


 
 
 
 
Partenaires

Hébergement Web