Сортировка валюты в VB.NET

У меня возникли трудности с решением проблемы сортировки валюты в нашем собственном программном пакете. Рассматриваемое программное обеспечение написано с использованием VB.NET, а значения содержатся в DataGridView, соответствующий код: Код SQLReader.Read()

и результат: Столбец значений отсортирован неправильно

Ниже по столбцу есть еще примеры, где значения с запятыми внутри них также не сортируются правильно. Как заставить их сортироваться?


person Rafee Shahin    schedule 09.10.2015    source источник
comment
Пожалуйста, включите код, встроенный в вопрос.   -  person Paddy    schedule 09.10.2015
comment
Ваши строки валюты/значения отсортированы правильно - по алфавиту, конечно. Действительно ли ваша база данных содержит строку типа «10 000,99 долларов США»? Это должно быть два поля, одно для числового значения и одно для валюты.   -  person Thorsten Kettner    schedule 09.10.2015


Ответы (1)


Я вижу, что ваш код преобразует числовые значения валюты в строку, а затем отображает строку в DataGridView - это ваша проблема: это означает, что DataGridView будет выполнять лексикографическое упорядочение строк вместо числового порядка (т.е. "21" упорядочивается после "123", потому что '2' > '1'.

Я не знаю, каково определение m_DataRow, но похоже, что вы используете нетипизированные наборы данных или, возможно, грубо созданный типизированный набор данных, но без каких-либо значимых имен столбцов и типов.

К сожалению, поскольку ваш DataGridView выглядит привязанным к этому объекту m_dataRow, вы застряли, если не можете правильно его воссоздать (например, с фактическими именами и типами столбцов). Однако, если вы используете нетипизированные наборы данных, просто измените свой код, чтобы прекратить форматирование значений валюты в строку, но вместо этого укажите необработанное значение Decimal напрямую, а затем используйте собственное форматирование столбца DataGridView, чтобы указать строку формата "C" (для валюты).

person Dai    schedule 09.10.2015