Silverlight Datagrid 数字排序

发布于 2024-10-12 13:58:48 字数 160 浏览 6 评论 0原文

有没有更简单的方法来正确排序数据网格中的数字数据?

说明 - 当您单击包含数据 1,5,10,2 的列标题时,它会将其排序为文本 (1,10,2,5)。

我读到您可以实现 ICollectionView 来创建您自己的自定义排序。在我走这条路之前,我想确保没有更简单的方法。

Is there simpler way to correctly sort numeric data in a datagrid?

Explanation - When you click on a column header with data 1,5,10,2 it sorts it as text (1,10,2,5).

I have read that you can implement ICollectionView, to create your own custom sorting. Before I go down that path, I want to make sure there isn't an easier way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

优雅的叶子 2024-10-19 13:58:48

一位同事解决了我的问题。通过将源对象包装在包装器中,您可以定义一个 SortBLANK,它仅将数据返回为 int 而不是字符串。然后,我使用 SortMemberPath 来设置该调用的排序。请注意,这仅适用于仅数字排序的问题。

XAML(部分):

<sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Header="MAC" FontSize="12"  Binding="{Binding macaddr}" Width="100"/>
    <sdk:DataGridTextColumn Header="Upload Rate" SortMemberPath="SortUpload"  FontSize="12"  Binding="{Binding uploadRate}" Width="3*"/>
    <sdk:DataGridTextColumn Header="Download Rate" SortMemberPath="SortDownload" FontSize="12"  Binding="{Binding downloadRate}" Width="3*"/>
</sdk:DataGrid.Columns>

代码隐藏(部分):

public class OnlineDevicesWrapper
    {
        public string macaddr{get;set;}
        public string uploadRate { get; set; }
        public string downloadRate { get; set; }

        public int SortUpload
        {
            get
            {
                return int.Parse(uploadRate);
            }
        }

        public int SortDownload
        {
            get
            {
                return int.Parse(downloadRate);
            }
        }
    }

A co-worker solved my problem. By wrapping the source object in a wrapper, you can then define a SortBLANK, which just returns the data as int instead of string. I then use SortMemberPath to set the sorting for that call. Note, this only works for the problem of numeric only sorting.

XAML(Partial):

<sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Header="MAC" FontSize="12"  Binding="{Binding macaddr}" Width="100"/>
    <sdk:DataGridTextColumn Header="Upload Rate" SortMemberPath="SortUpload"  FontSize="12"  Binding="{Binding uploadRate}" Width="3*"/>
    <sdk:DataGridTextColumn Header="Download Rate" SortMemberPath="SortDownload" FontSize="12"  Binding="{Binding downloadRate}" Width="3*"/>
</sdk:DataGrid.Columns>

Code-Behind(Partial):

public class OnlineDevicesWrapper
    {
        public string macaddr{get;set;}
        public string uploadRate { get; set; }
        public string downloadRate { get; set; }

        public int SortUpload
        {
            get
            {
                return int.Parse(uploadRate);
            }
        }

        public int SortDownload
        {
            get
            {
                return int.Parse(downloadRate);
            }
        }
    }
恍梦境° 2024-10-19 13:58:48

您想要的是使用 IComparer 接口的自然字符串排序比较器。有多种 C# 解决方案,我列出了一些。请注意,我认为它们中的任何一个都不是专门针对 Silverlight 的,尽管您在 Silverlight 中使用它们应该不会有太多麻烦。

如何实现自然(人类字母数字)使用 ViewModel 对 silverlight 数据网格进行排序?

http://www.codeproject. com/KB/string/NaturalSortComparer.aspx

C# 中的自然排序顺序

http://www.codeproject.com/KB/recipes/csnsort.aspx

What you want is a natural string sort comparer, using the IComparer interface. There are several C# solutions out there, I've listed a few. Note that I don't think any of them are geared towards Silverlight specifically, though you shouldn't have too much trouble using them in Silverlight.

How to achieve Natural(human alpha-numeric ) Sorting, for silverlight datagrids using ViewModel?

http://www.codeproject.com/KB/string/NaturalSortComparer.aspx

Natural Sort Order in C#

http://www.codeproject.com/KB/recipes/csnsort.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文