I'm working in VS2008 on a C# WinForms app. By default when clicking on a column header in a DataGridView it sorts that column Ascending, you can then click on the column header again to sort it Descending.
I am trying to reverse this, so the initial click sorts Descending then the second click sorts Ascending and I haven't been able to figure out how to do this. Does anyone know?
Thanks
You can set the HeaderCell SortGlyphDirection to Ascending, and then the next click will give you the descending order. The default is none.
dataGridView1.Sort(Column1, ListSortDirection.Ascending);
this.Column1.HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Ascending;
foreach (DataGridViewColumn column in DataGridView1.Columns)
{
column.SortMode = DataGridViewColumnSortMode.Programmatic;
}
and
private void DataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
var column = DataGridView1.Columns[e.ColumnIndex];
if (column.SortMode != DataGridViewColumnSortMode.Programmatic)
return;
var sortGlyph = column.HeaderCell.SortGlyphDirection;
switch (sortGlyph)
{
case SortOrder.None:
case SortOrder.Ascending:
DataGridView1.Sort(column, ListSortDirection.Descending);
column.HeaderCell.SortGlyphDirection = SortOrder.Descending;
break;
case SortOrder.Descending:
DataGridView1.Sort(column, ListSortDirection.Ascending);
column.HeaderCell.SortGlyphDirection = SortOrder.Ascending;
break;
}
}
I suggest below code
MyDGV.Sort(MyDGV.Columns[column_Index], ListSortDirection.Ascending);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With