public ColumnMetaData() { Name = new StringBuilder(); SortState = SortStateEnum.Unsorted; TextAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER; HeaderTextAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER; }
public void SortByColumn(int columnIdx, SortStateEnum?sortState = null, bool switchSort = true) { columnIdx = MathHelper.Clamp(columnIdx, 0, m_columnsMetaData.Count - 1); m_sortColumn = columnIdx; m_sortColumnState = sortState.HasValue ? sortState.Value : m_sortColumnState; var colMeta = m_columnsMetaData[columnIdx]; var originalSortState = colMeta.SortState; m_columnsMetaData[m_lastSortedColumnIdx].SortState = SortStateEnum.Unsorted; var comparison = colMeta.AscendingComparison; if (comparison == null) { return; } SortStateEnum targetSortState = originalSortState; if (switchSort) { targetSortState = ((originalSortState == SortStateEnum.Ascending) ? SortStateEnum.Descending : SortStateEnum.Ascending); } if (sortState.HasValue) { targetSortState = sortState.Value; } else if (m_sortColumnState.HasValue) { targetSortState = m_sortColumnState.Value; } if (targetSortState == SortStateEnum.Ascending) { m_rows.Sort((a, b) => comparison(a.Cells[columnIdx], b.Cells[columnIdx])); } else { m_rows.Sort((a, b) => comparison(b.Cells[columnIdx], a.Cells[columnIdx])); } m_lastSortedColumnIdx = columnIdx; colMeta.SortState = targetSortState; SelectedRowIndex = null; }
public void SortByColumn(int columnIdx, SortStateEnum? sortState = null, bool switchSort = true) { columnIdx = MathHelper.Clamp(columnIdx, 0, m_columnsMetaData.Count - 1); m_sortColumn = columnIdx; m_sortColumnState = sortState.HasValue ? sortState.Value : m_sortColumnState; var colMeta = m_columnsMetaData[columnIdx]; var originalSortState = colMeta.SortState; m_columnsMetaData[m_lastSortedColumnIdx].SortState = SortStateEnum.Unsorted; var comparison = colMeta.AscendingComparison; if (comparison == null) return; SortStateEnum targetSortState = originalSortState; if (switchSort) { targetSortState = ((originalSortState == SortStateEnum.Ascending) ? SortStateEnum.Descending : SortStateEnum.Ascending); } if (sortState.HasValue) targetSortState = sortState.Value; else if (m_sortColumnState.HasValue) targetSortState = m_sortColumnState.Value; if (targetSortState == SortStateEnum.Ascending) m_rows.Sort((a, b) => comparison(a.Cells[columnIdx], b.Cells[columnIdx])); else m_rows.Sort((a, b) => comparison(b.Cells[columnIdx], a.Cells[columnIdx])); m_lastSortedColumnIdx = columnIdx; colMeta.SortState = targetSortState; SelectedRowIndex = null; }