2015-01-09 2 views
0

У меня странная проблема, что я не уверен, как обойти. В основном потому, что я не вижу, что я делаю неправильно.Колонки DevExpress XtraTreeList Сортировка Числовые

Я использую элемент управления DevExpress TreeList. У меня есть несколько столбцов, главный вопрос при сортировке столбцов численно, столбцы сортируются в алфавитном порядке, например .:

56.2, 57.3, 63.4, 78.9... then 8.3. 

Так это его сортировку в алфавитном порядке. Я установил UnboundType в Decimal много раз и изменил SortMode на Value, и я пробовал Default. Я также попытался изменить UnboundType на Object. Я также попытался изменить FormatMode на Numeric, но все же это происходит. Я нашел сообщение на DX, но это было бесполезно и не имеет отношения к моей ситуации.

Может ли кто-нибудь помочь? Кто-нибудь испытал эту проблему раньше? Если у вас есть идеи, я бы очень признателен.

Заранее благодарен!


Спасибо за ответ Marko. Я прочитал, что КБ уже, я попытался установить SortMode: Custom со следующим обработчиком событий:

private void trResults_CompareNodeValues(object sender, DevExpress.XtraTreeList.CompareNodeValuesEventArgs e) 
     { 
      if (e.Column == colSize) 
      { 
       try 
       { 
        int value1 = Convert.ToInt32(Regex.Replace((e.NodeValue1 as string), "[^0-9.]", "")); 
        int value2 = Convert.ToInt32(Regex.Replace((e.NodeValue2 as string), "[^0-9.]", "")); 
        e.Result = value1 - value2; 
       } 
       catch { } 
      } 
     } 

Я попробовал свой путь, и с моим RegEx (которые не должен иметь никакого эффекта). Вот где это становится еще хуже; Я установил точку останова и угадаю, что, когда я сортирую столбцы, он не попадает ?!

Что, черт возьми, с ним !?

Заранее спасибо.

ответ

0

Это все хорошие парни. Я сделал небольшую ошибку, оказалось, что я не подключался даже к TreeList, который был сорван моей собственной идиократией.

0

Вам нужно обрабатывать CompareNodeValues ​​событий (Example on DevExpress site)

private void mytree_CompareNodeValues(object sender,DevExpress.XtraTreeList.CompareNodeValuesEventArgs e) { 
    if (e.Column == myspecialsortcolumn) { 
    e.Result = Convert.ToDecimal(e.NodeValue1) - Convert.ToDecimal(e.NodeValue2); 
    } 
}