DevExpress XtratreList列排序数字

DevExpress XtratreList列排序数字,devexpress,xtratreelist,columnsorting,Devexpress,Xtratreelist,Columnsorting,我有一个奇怪的问题,我不知道如何解决。主要是因为我看不出我做错了什么 我正在使用DevExpress树列表控件。我有多个列,主要问题是当对列进行数字排序时,列按字母顺序排序,例如: 56.2, 57.3, 63.4, 78.9... then 8.3. 所以它是按字母顺序排列的。我已经多次将UnboundType设置为Decimal,并将SortMode更改为Value,并且尝试使用默认值。我还尝试将UnboundType更改为Object。我还尝试将FormatMode更改为Numeric,

我有一个奇怪的问题,我不知道如何解决。主要是因为我看不出我做错了什么

我正在使用DevExpress树列表控件。我有多个列,主要问题是当对列进行数字排序时,列按字母顺序排序,例如:

56.2, 57.3, 63.4, 78.9... then 8.3.
所以它是按字母顺序排列的。我已经多次将UnboundType设置为Decimal,并将SortMode更改为Value,并且尝试使用默认值。我还尝试将UnboundType更改为Object。我还尝试将FormatMode更改为Numeric,但仍然会发生这种情况。我确实在DX上找到了一个帖子,但它毫无用处,与我的情况无关

有人能帮忙吗?以前有人遇到过这个问题吗?如果你有任何想法,我将非常感激

提前谢谢

谢谢你的回复,马尔科。我已经阅读了KB,我尝试使用以下事件处理程序设置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 { }
            }
        }
我试过你的方法,用我的正则表达式,应该不会有任何效果。在这里,情况变得更糟;我设置了一个断点,猜猜看,当我对列进行排序时,它没有命中

这到底是怎么回事


提前感谢。

您需要处理事件比较贬值


都是好人。我犯了一个小小的错误,结果发现我没有把这封信连到树上,这是因为我自己的白痴

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