.Net Gridview alpha排序,需要进行数字排序

时间:2008-09-17 03:42:58

标签: c# .net gridview

这是我在.NET世界中对任何Gridview专家的第一个真正需要的问题。

我是从代码隐藏创建一个Gridview,我在列中持有一堆数值数据。虽然,我确实在代码隐藏的数字字段中添加逗号。当我将它加载到Gridview时,我打开了排序功能,但是gridview选择ALPHA排序而不是数字排序,因为我添加了这些逗号。

所以我需要帮助。谁愿意给这个人一个机会?我需要将gridview中的一些列更改为数字排序,而不是它正在使用的alpha排序。

5 个答案:

答案 0 :(得分:1)

如果你最终实现自己的比较器并将它们排序为字符串,那么“正确”处理数字的算法称为自然排序。杰夫在这里写了一篇相当不错的文章:
Sorting for Humans : Natural Sort Order

你可以在C#中找到一个非常好的实现:
http://www.codeproject.com/KB/string/NaturalSortComparer.aspx

答案 1 :(得分:0)

根据您的排序方式,您可以使用上述方法之一,或者如果列实际上是数字类型,您可以返回到数据库并在那里完成排序,然后再添加您的装饰。

答案 2 :(得分:0)

P-Invoke是你的朋友。

[DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);

然后你可以将它用作你自己的比较器。

例如(在VS2005中),

Array.Sort(tringArray, delegate(string left, string right)
{
    return StrCmpLogicalW(left, right);
});

答案 3 :(得分:0)

相反,我只使用了JQUERY Table Sorter。

可以在这里找到:tablesorter

答案 4 :(得分:0)

我意识到这真的很古老,但你把数据与演示混合在一起;那是什么搞砸了那种。在不添加逗号的情况下从SQL中获取数字,然后将它们添加到表示层中。