Хорошо, у меня есть DataGridView, который привязан к данным, например:
dataGridViewChartOre.AutoGenerateColumns = false;
dataGridViewChartOre.DataSource = xml.GetOreChart();
dataGridViewChartOre.DataMember = "ore";
Все столбцы были созданы вручную через пользовательский интерфейс. А столбцы состоят из 1 строки, 10 знаков после запятой. Где последний столбец - валюта.
Теперь получить валюту для отображения в dataGridView было быстро решить один раз, я вспомнил, что ввод из xml всегда был строкой. Используя этот подход: (Нашел еще где-то на этом сайте.)
private void dataGridViewChartOre_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
string value = e.Value.ToString();
decimal d;
if (decimal.TryParse(value, out d))
{
e.Value = d;
}
}
Теперь получение десятичных знаков для сортировки кажется гораздо более серьезной проблемой. Я пробовал несколько предложенных решений, однако пока ни одно из них не сработало.
- Использование float вместо десятичных дробей.
- Использование SortCompare // SortResult
Прямо сейчас он сортирует все десятичные числа только по первому числу, то есть:
8616
8225
785995
7833
78069
773403
750268
74521
738249
714541
70972
and so on
Итак, как это исправить, и даже лучше, если бы кто-нибудь мог объяснить мне, почему это происходит?
Кроме того, кстати, как изменить CurrencySymbol? Я хочу использовать другой символ во всей программе, однако он должен сохранить обычный формат даты и времени в США.
DataGridViewColumns
, которые добавляются вручную, имеют десятичный тип? Ваши соответствующие столбцы DataSource должны быть сначала преобразованы в десятичные числа. - person King King   schedule 07.07.2013