这是我的第一个真正的问题,即.NET世界中是否需要任何Gridview专家。
我从后台代码创建一个Gridview,并且在列中保存了一堆数字数据。 虽然,但我确实在codebehind的数字字段中添加了逗号。 当我将其加载到Gridview时,我启用了排序功能,但由于我添加了这些逗号,因此gridview选择了ALPHA排序而不是数字排序。
所以我需要帮助。 有人愿意试一试吗? 我需要将gridview中的某些列更改为数字排序,而不是它使用的alpha排序。
如果您最终实现了自己的比较器并将其作为字符串排序,则“正确”对待数字的算法称为自然排序。 杰夫在这里写了一篇很好的文章:
人选:自然排序
您可以在C#中找到一个很好的实现:
http://www.codeproject.com/KB/string/NaturalSortComparer.aspx
相反,我只是诉诸于JQUERY表排序器。
可以在这里找到: tablesorter
根据确切的排序方式,您可以使用上述方法之一,或者如果列实际上是数字类型,则可以返回到DB并在那里完成排序,然后再添加修饰。
我意识到这确实很古老,但是您正在将数据与演示结合在一起; 这就是搞砸排序的原因。 从SQL中获取数字而不添加逗号,然后将其添加到表示层中。
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);
});