2013-10-05 4 views
0

У меня есть еще одна проблема с сортировкой чисел, которые на самом деле являются строковыми [varchar] из БД. В представлении WPF шаблон ячейки имеет текстовое поле.Как изменить сортировку столбцов столбцов на десятичную сортировку в столбце столбца WPF

Когда данные загружаются в представлении списка из БД, столбец «Зарплата списка» привязан к столбцу зарплаты в таблице данных. Из-за некоторой другой бизнес-логики этот столбец зарплаты в таблице базы данных является varchar.

Но когда оно показано в списке, зарплата отображается как «456,56», как плавающие или десятичные числа в столбце ячейки зарплаты в списке. Поскольку основным источником данных является таблица данных, столбец зарплаты - это тип данных varchar! Поэтому при сортировке столбца зарплаты listview он не сортирует столбец зарплаты точно так же, как цифры!

Могу ли я использовать IComparer в этом случае? Если да, то как? любой пример очень полезен !!

ответ

0

Почему вы не просто перебираете данные, либо когда вы их извлекаете, либо в модели представления, прежде чем отображать их и анализировать данные до нужного типа данных? Тогда вы можете позволить ListView сделать сортировку:

foreach (YourDataType item in yourItemCollection) 
{ 
    YourDisplayDataType displayItem = new YourDisplayDataType(item.Property1, 
     item.Property2, decimal.Parse(item.DecimalVarcharProperty)); 
} 

Конечно, если вы сделаете это, вы должны убедиться, что decimal VARCHAR значения, поступающее из базы данных являются фактически все десятичными значениями. Если нет, то вы могли бы сделать выше в два этапа:

foreach (YourDataType item in yourItemCollection) 
{ 
    decimal decimalValue = 0; 
    decimal.TryParse(item.DecimalVarcharProperty, out decimalValue); 
    YourDisplayDataType displayItem = new YourDisplayDataType(item.Property1, 
     item.Property2, decimalValue); 
} 

Отказ от ответственности: Я не могу проверить это в компиляторе в настоящее время, так что может быть ошибка ... Пожалуйста, дайте мне знать, если это так, и я обновлю ответ.

Смежные вопросы