Salut a tous !
j'ai besoin de vous pour m'expliquer comment je peux trier les colonnes de mon datagrid en cliquant sur l'entete de la colonne sa serais super sympa de voter part !
Bizzz
PS : application web asp.net C#.
Salut a tous !
j'ai besoin de vous pour m'expliquer comment je peux trier les colonnes de mon datagrid en cliquant sur l'entete de la colonne sa serais super sympa de voter part !
Bizzz
PS : application web asp.net C#.
j'aimerais aussi savoir comment faire . J'avais déjà chercher et rien trouver je mettais rabattu en le faisant manuellement dans le DataSet
Déjà, il faut mettre la proprieté du DataGrid : AllowSorting à true
Une fois le tri activé, la grille rend les contrôles LinkButton dans l'en-tête de chaque colonne. Si vous cliquez sur le bouton, l'événement SortCommand de la grille est levé. C'est à vous de traiter cet événement dans votre code. Comme DataGrid affiche toujours les données dans l'ordre d'apparition dans la source de données, la logique classique trie la source de données, puis lie à nouveau les données à la grille
En complément, pour faire un tri sur plusieurs colonnes on peut modifier la property Sortstr du BindingSource du Datagriview:
MyDataGridView.BindingSource.SortStr="NOM ASC,PRENOM ASC,AGE DESC"
salut
Deja UN GRAND merci pour vos reponses.
DOnc si j'ai bien compris je resume un peu tous je dois avoir du code qui ressemble a sa ? :
dans ma page asp :
dans mon code behind :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <asp:datagrid id=dgObjet runat="server" width="100%" horizontalalign="Center" autogeneratecolumns="False" cellpadding="3" gridlines="Horizontal" itemstyle-height="30" allowpaging="True" allowsorting="True">
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ??????????
je ne comprend pas commenttraduire ceci en ligne de code et a quoi cela correspon exactement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Si vous cliquez sur le bouton, l'événement SortCommand de la grille est levé. C'est à vous de traiter cet événement dans votre code. Comme DataGrid affiche toujours les données dans l'ordre d'apparition dans la source de données, la logique classique trie la source de données, puis lie à nouveau les données à la grille
Dite vous auriez un exemple sur quoi me basé ????
MERCI A VOUS !!!
'essai ce bout de code dans l'evenement gridview_sorting()
Protected Sub GridView_Sorting
dataset.Tables("nomTable").DefaultView.Sort = e.SortExpression
GridView.DataSource = dataset.Tables("nomTable").DefaultView
GridView.DataBind()
End sub
Si ca pour t'aide a plus![]()
nannnnn sa m'aide pas !!!
quelqun peut m'aider ?????
reprend exactement ton blem
tu veu trier un gridview?
en c #
je te passe mon code et tu me dis si je peux faire ce que tu me propose :
voici comment je charge mon datagrid :
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
47
48
49
50
51
52
53
54
55
56
57
58
59 private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here string ligne = "" ; string SortField= ""; DataTable Dt = new DataTable(); // Ajout des entêtes de colonnes a mon DataTable. Dt.Columns.Add(new DataColumn("id",typeof (string))); Dt.Columns.Add(new DataColumn("Macro",typeof (string))); Dt.Columns.Add(new DataColumn("Lib",typeof (string))); Dt.Columns.Add(new DataColumn("FR",typeof (string))); Dt.Columns.Add(new DataColumn("A",typeof (string))); Dt.Columns.Add(new DataColumn("CH",typeof (string))); Dt.Columns.Add(new DataColumn("ST",typeof (string))); Dt.Columns.Add(new DataColumn("O",typeof (string))); Dt.Columns.Add(new DataColumn("M",typeof (string))); ArrayList listeLigne = new ArrayList() ; //Lecture de mon fichier StreamReader sr=File.OpenText(@"C:\SI4MACRO.dat") ; /* --- Chaque ligne de mon fichier est stocké dans un tableau d'une colonne "listeLigne" */ while ((ligne = sr.ReadLine()) != null) { if (ligne != null && ligne != string.Empty) { string [] listeChaine = ligne.Split('\t') ; listeLigne.Add(listeChaine) ; } } /* --- Je partage ma ligne en mot et je stocke ceci dans un tableau de ligne --- et de colonne correspondant au mot de chaque ligne */ foreach (string[] tablo in listeLigne) { DataRow Dr = Dt.NewRow(); Dr[1] = tablo[6]; Dr[2] = tablo[7]; Dr[3] = tablo[5]; Dr[4] = tablo[4]; Dr[5] = tablo[0]; Dr[6] = tablo[1]; Dr[7] = tablo[3]; Dr[8] = tablo[2]; Dt.Rows.Add(Dr); } DataView Dv = new DataView(Dt); dgObjet.DataSource = Dv; dgObjet.DataBind(); }
voici ma page asp
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 <asp:datagrid id=dgObjet runat="server" width="100%" horizontalalign="Center" autogeneratecolumns="False" cellpadding="3" gridlines="Horizontal" itemstyle-height="30" allowpaging="True" allowsorting="True"> <alternatingitemstyle wrap="False" cssclass="Tableau_content_alternate"> </AlternatingItemStyle> <itemstyle wrap="False" height="30px" cssclass="Tableau_content"> </ItemStyle> <headerstyle cssclass="Tableau_top"> </HeaderStyle> <columns> <asp:templatecolumn sortexpression="macro" headertext="Macro"> <itemtemplate> <asp:linkbutton id="macro" runat="server" onclick="macro_Click" commandargument='<%# DataBinder.Eval(Container.DataItem, "macro") %>'> <%# DataBinder.Eval(Container.DataItem, "macro") %> </asp:linkbutton> </ItemTemplate> </asp:templatecolumn> <asp:boundcolumn datafield="lib" sortexpression="lib" headertext="Libéllé"></asp:boundcolumn> <asp:boundcolumn datafield="Fr" sortexpression="Fr" headertext="Fréquence"></asp:boundcolumn> <asp:boundcolumn datafield="A" sortexpression="A" headertext="Action"></asp:boundcolumn> <asp:boundcolumn datafield="CH" sortexpression="CH" headertext="Numéro de la chaine"></asp:boundcolumn> <asp:boundcolumn datafield="ST" sortexpression="ST" headertext="Step"></asp:boundcolumn> <asp:boundcolumn datafield="O" sortexpression="O" headertext="Odre"></asp:boundcolumn> <asp:boundcolumn datafield="M" sortexpression="M" headertext="Machine"></asp:boundcolumn> </Columns> <pagerstyle cssclass="Tableau_top" mode="NumericPages"></PagerStyle> </asp:datagrid>
en mettant AllowShorting sa me mets mes entete de colonne cliquable et jaimerais quang je clik dessus que sa me tri mes colonne apr ordre alphabétique.
je ne sais pas coder cet evenement !
Déjà, tu commences par remplir ton DataGrid dans le Page_Load...il faut rajouter !IsPostBack sinon, il va repasser dedans à chaque fois...
Il faut maintenant déclarer un evenement Sorting sur ta DataGrid et comme l'a dit Mr Net il faut y inscrire celà :
Protected Sub GridView_Sorting
dataset.Tables("nomTable").DefaultView.Sort = e.SortExpression
GridView.DataSource = dataset.Tables("nomTable").DefaultView
GridView.DataBind()
End sub
comme je débute en c# c'est jsutement la syntaxe qui me manqué lol !!!!!!!!
mais c'est gentil de m'aider !!
tu pense qu"il ya boucou de différence en c# ????
essai cela
copy et cole dan le code behind
protected void dgObjet _Sorting(Object sender, datagridSortEventArgs e)
{
Dv.Sort=e.SortExpression;
dgObjet .DataSource = Dv.DefaultView;
dgObjet .DataBind();
}![]()
il me dis " Dv could not befound ??????"
Normal, ton DV est non declaré dans ta méthode...
Essaye de la déclarer en méthode variable
mais il va savoir qu'il correspond au Dataview de mon Page Load ???
je teste .??
oups!!!!
refait plutot ca
dans la class
DataTable Dt = new DataTable();
DataView Dv = new DataView();
dans ton code tu ne fera que:
Dv.Table=Dt;
![]()
ca doit aller
il me marque l'ereur suivante que mon " Dv does not contain a définition for defaultView"
oups il nya pas Dv.defaultview // eleve le et recolle ca
dv.Sort=e.SortExpression;
dgObjet.DataSource = dv;
dgObjet.DataBind();
désoler de deander encore mais la il me fait une autre faute
le code que tu ma donner ne bug pas mais quand je lance l'apllication il boque qur la ligne :
et il me marque la faute
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dv.Sort=e.SortExpression;
car la colonne sur laquel j'ai cliquer s'appelle marco :voici comment je l'ai declarer dans ma page aspx!
Code : Sélectionner tout - Visualiser dans une fenêtre à part Exception Details: System.IndexOutOfRangeException: Cannot find column lib.
[CODE]<asp:boundcolumn datafield="lib" sortexpression="lib" headertext="Libéllé"></asp:boundcolumn>[CODE]
BOn je pense ke ta trouve
clik sur aure colone pour tester pour voir
je pense ke macro cest ton linkbouton si jai bien lu ton code![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager