Ho un modulo Windows con un datagridview
.Rende ordinabili tutte le colonne datagridview
La situazione ideale: scatta
utente su uno dei nove colonne, e il programma ordina tutti i dati, se la colonna cliccato contiene i numeri, vorrei che il numero più basso in alto. Se la colonna cliccata contiene una stringa, vorrei che fosse ordinata alfabeticamente (A-Z).
Quello che ho in questo momento:
ho visto una vecchia questione su Stack Overflow in cui il PO come ordinare la datagridview quando si fa clic "a" colpo di testa. La differenza con la mia è che voglio che il mio datagridview sia ordinabile da una qualsiasi delle nove colonne.
ho questo codice, rubato alla domanda che ho trovato:
dataGridView2.DataSource = listPlayers.Select(s => new { voornaam = s.Voornaam,
Achternaam = s.Achternaam,
positie = s.Positie,
Nationaltieit = s.Nationaliteit,
Leeftijd = s.Age,
Aanval = s.Aanval,
Verdediging = s.Verdediging,
Gemiddeld = s.Gemiddeld,
waarde = s.TransferWaarde })
.OrderBy(s => s.Achternaam)
.ToList();
foreach(DataGridViewColumn column in dataGridView2.Columns)
{
dataGridView2.Columns[column.Name].SortMode =
DataGridViewColumnSortMode.Automatic;
}
In questo modo solo l'ordine utente "Achternaam" quando fa clic su uno dei nove colonne. Quello che voglio è quando l'utente fa clic sulla colonna Nationaliteit, i dati vengono ordinati con l'An in cima. E così via per ogni colonna
Questa è la lista listplayers:
namespace SimulatorSimulator
{
class SpelerData
{
public string Voornaam { get; set; }
public string Achternaam { get; set; }
public string Positie { get; set; }
public string Nationaliteit { get; set; }
public int Age { get; set; }
public int Aanval { get; set; }
public int Verdediging { get; set; }
public int Gemiddeld { get; set; }
public string TransferWaarde { get; set; }
}
}
e nella classe principale:
List<SpelerData> listPlayers = new List<SpelerData>();
Alcuni dati fittizi:
Romelu;Lukaku;Aanvaller;Belgie;22;87;12;50;41.000.000,00
Raheem ;Sterling;Aanvaller;Engeland;21;84;30;57;35.000.000,00
Zlatan ;Ibrahimovic;Aanvaller;Zweden;34;87;21;54;34.500.000,00
@KevinTinnemans Si prega di considerare il commento di Ivan Stoev sulla risposta di Ian con più attenzione. Potrei essere fiammeggiato per averlo detto, e questo potrebbe essere frainteso da quando ho postato la mia risposta, ma la risposta accettata non ti aiuterà a diventare uno sviluppatore migliore in alcun modo. La forza bruta è un punto di partenza, ed è ciò a cui si ricade quando non si riesce a trovare una soluzione migliore, per la quale ce ne sono diversi per questo particolare problema. Ciò porterà a cattive pratiche e codice ingestibile. –