Сортировка данных листа
Сортировка данных в таблице
Для сортировки данных в таблице с использованием API Aspose.Cells.GridDesktop, следуйте приведенным ниже шагам:
- Прежде всего создайте глобальный объект CellRange, чтобы его можно было получить в любом месте вашего класса
- Создайте обработчик события для события SelectedCellRangeChanged объекта GridDesktop. Событие SelectedCellRangeChanged вызывается каждый раз, когда выбранный пользователем диапазон ячеек изменяется. Например, если пользователь выбирает ячейки (с данными, которые нужно отсортировать), то каждый раз, когда его диапазон выбора изменяется, это событие вызывается.
- Обработчик события предоставляет аргумент CellRangeEventArgs, который далее предоставляет обновленный диапазон ячеек (выбранный пользователем) в виде объекта CellRange. Таким образом, в этом обработчике событий мы присвоим этот объект CellRange (с обновленным диапазоном ячеек) глобальному объекту CellRange, чтобы его можно было использовать в другой части кода. Чтобы убедиться, что мы не потеряем диапазон ячеек, мы напишем код обработчика событий внутри условия
- Теперь мы можем написать некоторый код для сортировки данных в таблице. Прежде всего получим доступ к нужной таблице
- Создайте объект SortRange, который будет хранить диапазон ячеек, данные которых нужно отсортировать. В конструкторе SortRange мы можем указать таблицу, индексы начальной строки и столбца, количество строк и столбцов для сортировки, ориентацию сортировки (например, сверху вниз или слева направо) и т.д.
- Теперь мы можем вызвать метод Sort объекта SortRange для выполнения сортировки данных. В методе Sort мы можем указать индекс столбца или строки для сортировки и порядок сортировки (который может быть По возрастанию или По убыванию в соответствии с вашими требованиями)
- Наконец, мы можем вызвать метод Invalidate объекта GridDesktop для перерисовки ячеек.
В приведенном ниже примере показано, как сортировать данные в столбце.
Создайте глобальный объект CellRange и событие SelectedCellRangeChanged объекта GridDesktop. Теперь напишите код, как показано ниже:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Creating global variable of CellRange | |
CellRange range; | |
private void gridDesktop1_SelectedCellRangeChanged(object sender, Aspose.Cells.GridDesktop.CellRangeEventArgs e) | |
{ | |
// Checking if the range of cells is not empty | |
if ((e.CellRange.EndColumn - e.CellRange.StartColumn > 0) || | |
(e.CellRange.EndRow - e.CellRange.StartRow > 0)) | |
{ | |
// Assigning the updated CellRange to global variable | |
range = e.CellRange; | |
} | |
} |
Теперь напишем метод для Сортировки по возрастанию. Вы можете создать кнопку для Сортировки по возрастанию и написать нижеуказанный код в ее событии Click.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing a worksheet that is currently active | |
Worksheet sheet = gridDesktop1.GetActiveWorksheet(); | |
// Creating SortRange object | |
SortRange sr = new SortRange(sheet, range.StartRow, | |
range.StartColumn, range.EndRow - range.StartRow + 1, | |
range.EndColumn - range.StartColumn + 1, | |
SortOrientation.SortTopToBottom, true); | |
// Sorting data in the specified column in ascending order | |
sr.Sort(range.StartColumn, Aspose.Cells.GridDesktop.SortOrder.Ascending); | |
// Redrawing cells of the Grid | |
gridDesktop1.Invalidate(); |
Наконец, напишем некоторый код для реализации функциональности Сортировки по убыванию. Создайте кнопку Сортировка по убыванию и напишите нижеуказанный код в ее событии Click.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing a worksheet that is currently active | |
Worksheet sheet = gridDesktop1.GetActiveWorksheet(); | |
// Creating SortRange object | |
SortRange sr = new SortRange(sheet, range.StartRow, range.StartColumn, | |
range.EndRow - range.StartRow + 1, | |
range.EndColumn - range.StartColumn + 1, | |
SortOrientation.SortTopToBottom, true); | |
// Sorting data in the specified column in descending order | |
sr.Sort(range.StartColumn, Aspose.Cells.GridDesktop.SortOrder.Descending); | |
// Redrawing cells of the Grid | |
gridDesktop1.Invalidate(); |