Torna al Thread

private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { string nomeProprieta = dataGridView1.Columns[e.ColumnIndex].DataPropertyName; //--- uso il tag della colonna per memorizzarmi la direzione if(dataGridView1.Columns[e.ColumnIndex].Tag == null) dataGridView1.Columns[e.ColumnIndex].Tag = ListSortDirection.Ascending; ListSortDirection direzione = (ListSortDirection)dataGridView1.Columns[e.ColumnIndex].Tag; if (direzione == ListSortDirection.Ascending) direzione = ListSortDirection.Descending; else direzione = ListSortDirection.Ascending; //--- ordino la sorgente dati e la rimetto come sorgente List<Articolo> lista = dataGridView1.DataSource as List<Articolo>; lista.Sort( delegate(Articolo art1, Articolo art2) { //--- recupero i valori di proprietà dei 2 oggetti IComparable val1 = art1.GetType().GetProperty(nomeProprieta).GetValue(art1, null) as IComparable; IComparable val2 = art2.GetType().GetProperty(nomeProprieta).GetValue(art2, null) as IComparable; if (val1 == null || val2 == null) return 0; if (direzione == ListSortDirection.Ascending) return val1.CompareTo(val2); else return val2.CompareTo(val1); }); dataGridView1.Refresh(); dataGridView1.Columns[e.ColumnIndex].Tag = direzione; }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5