Я пытаюсь отсортировать сетку данных по итоговой строке, которая является источником данных из таблицы данных.Я пытаюсь добиться того, чтобы исключить итоговую строку из сортировки каждый раз, когда пользователь щелкает столбец таблицы данных.Я использую DataGridViewCellMouseEventArgs для захвата этого события.Вот мой код:
private void dgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView dgv = sender as DataGridView;
var columnSortDirection = string.Empty;
var columnName = dgv.SortedColumn.DataPropertyName;
if (dgv.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == SortOrder.Descending)
{
columnSortDirection = "DESC";
}
else
{
columnSortDirection = "ASC";
}
//remove total row before sort
var lastRow = dt.Rows[dt.Rows.Count - 1];
dt.Rows.Remove(lastRow);
//sort datatable
DataView dv = dt.DefaultView;
dv.Sort = string.Format("{0} {1}", columnName, columnSortDirection);
DataTable sortedDt = dv.ToTable();
//reinserting total row after dt is sorted
InsertTotalRow(sortedDt);
dgv.DataSource = sortedDt;
}
Код работает только по возрастанию, но не по другому.По любой причине он никогда не изменит направление на нисходящее, когда пользователь снова щелкнет по столбцу.Что я тут не так делаю?