web-dev-qa-db-fra.com

Trier les colonnes dataGridView en C #? (Windows Form)

J'ai une datagridview que je lie à partir d'une table sql, en ce que j'ai les attributs suivants: Id, Name et Price. Lorsque je définit le mode de tri des colonnes de nom sur Automatique et que je clique sur l'en-tête de cette colonne, je peux trier ce DVD en fonction de la première lettre du nom, de cette façon, je peux commander des produits en fonction de leurs premières lettres (accumulateur, bateau, CocaCola, moteur, etc.).

Est-il possible que cette chose se produise sans cliquer sur l'en-tête de la colonne Nom. Je cherche du code qui fera ce travail lorsque le formulaire sera chargé.

44
AXheladini

Il y a une méthode sur le DataGridView appelée "Trier":

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending);

Cela triera par programmation votre datagridview.

100
BFree
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending);
13
user427483

Vous pouvez contrôler les données renvoyées par la base de données SQL en ordonnant les données retournées:

orderby [Name]

Si vous exécutez la requête SQL à partir de votre application, commandez les données renvoyées. Par exemple, créez une fonction qui appelle la procédure ou exécute le SQL et donnez-lui un paramètre qui obtient les critères orderby. Parce que si vous avez ordonné les données renvoyées par la base de données, cela prendra du temps, mais ordonnez-les car elles sont exécutées car vous dites que vous voulez qu'elles soient ordonnées et non à partir de l'interface utilisateur que vous voulez qu'elles soient ordonnées au moment de l'exécution, alors ordonnez-les lors de l'exécution du SQL question.

6
Ahmy

Celui-ci est plus simple :)

dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview;
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC";
this.datagridview.datasource = dataview1;
2
nate wew

Utilisation Datatable.Default.Sort, puis la lier à la datagridview.

0
danish

La meilleure façon de procéder consiste à trier la liste avant de lier la source de données.

cars = cars.OrderBy(o => o.year).ThenBy(o => o.color).ToList(); adgCars.DataSource = cars;

Désolé pour mon mauvais anglais.

0
Luis Márquez