Member 13476575 Ответов: 4

C# datagridview как сортировать строковый столбец на основе значения времени.


у меня есть столбец datagridview, который является типом строки, а строковые значения-временем(например: 12:15:00 am), я хочу отсортировать столбец в следующем порядке

12:15:00 утра
12:20:00 утра
1:50:00 утра
4:00:00 утра
11:00:00 утра
2:00:00 вечера
5:00:00 вечера

так далее.

Однако результат различен и его сортировка основана на числах.
есть ли что-нибудь, что я могу сделать, чтобы достичь этого, пожалуйста, помогите.

Что я уже пробовал:

<pre>usrgrid1.Sort(usrgrid1.Columns["TimeUpdated"], ListSortDirection.Ascending);

4 Ответов

Рейтинг:
2

Patrice T

Цитата:
есть ли что-нибудь, что я могу сделать, чтобы достичь этого, пожалуйста, помогите.

Всего несколько вариантов:
- переключитесь на 24 - часовой формат (военное время в США). Сортировка может быть выполнена непосредственно со строкой в этом формате.
- используйте тип данных datetime, он сортируется.


Рейтинг:
2

Member 14743997

Вместо столбца String вы можете использовать столбец DateTime и установить его DefaultCellStyle.Свойство Format для любого формата datetime.


Рейтинг:
0

phil.o

Вы могли бы попробовать использовать другую перегрузку Sort метод:
Практическое руководство.Метод Сортировки (System.Окна.Формы) | Microsoft Docs[^]
и создать IComparer который преобразует значения столбцов обратно в DateTime значения перед сравнениями. Вы можете основать свою реализацию на приведенном примере.


Maciej Los

5ed!

Рейтинг:
0

Maciej Los

Цитата:
есть ли что-нибудь, что я могу сделать, чтобы достичь этого


Да, вам нужно использовать правильный тип данных: DateTime, вместо string Тогда вы сможете правильно сортировать данные.


phil.o

разумный Совет :)

Maciej Los

Спасибо, Оливье.