private void sortColumnHeader_Click(object sender, DataGridViewCellMouseEventArgs e) { if (Rows.Count < 1) { return; } columnToBeSortedIndex = e.ColumnIndex; if (Columns[columnToBeSortedIndex].SortMode == DataGridViewColumnSortMode.NotSortable) { return; } CollapsingPoolHostDataGridViewRow firstRow = Rows[0] as CollapsingPoolHostDataGridViewRow; if (firstRow == null) { return; } DetermineSortDirection(e); if (columnToBeSortedIndex == firstRow.NameCellIndex) { SortAndRebuildTree(new CollapsingPoolHostDataGridViewRowDefaultSorter(direction)); } SortAdditionalColumns(); Columns[columnToBeSortedIndex].HeaderCell.SortGlyphDirection = direction == ListSortDirection.Ascending ? SortOrder.Ascending : SortOrder.Descending; }
/// <summary> /// Interface member correcting the sort for the direction required /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns>0,1 or -1 depending on the comparison</returns> public int Compare(object x, object y) { if (x == null || y == null) return 1; lhs = x as CollapsingPoolHostDataGridViewRow; rhs = y as CollapsingPoolHostDataGridViewRow; if (lhs == null || rhs == null) return 1; if (direction == ListSortDirection.Ascending) return PerformSort(); else return -1 * PerformSort(); }
/// <summary> /// Interface member correcting the sort for the direction required /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns>0,1 or -1 depending on the comparison</returns> public int Compare(object x, object y) { if (x == null || y == null) { return(1); } lhs = x as CollapsingPoolHostDataGridViewRow; rhs = y as CollapsingPoolHostDataGridViewRow; if (lhs == null || rhs == null) { return(1); } if (direction == ListSortDirection.Ascending) { return(PerformSort()); } else { return(-1 * PerformSort()); } }