2011-01-19 14 views
2

データグリッド内の数値データを正しく並べ替える簡単な方法はありますか?Silverlight Datagrid数値ソート

説明 - データ1,5,10,2の列ヘッダーをクリックすると、テキスト(1,10,2,5)としてソートされます。

ICollectionViewを実装して独自のカスタムソートを作成できることを読んだことがあります。私はその道を行く前に、もっと簡単な方法がないことを確認したいと思います。

答えて

3

同僚は私の問題を解決しました。ラッパーにソースオブジェクトをラップすることによって、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); 
      } 
     } 
    } 
2

あなたが望むのは、IComparerインターフェイスを使用して、自然な文字列ソートコンペアラです。いくつかのC#ソリューションがありますが、いくつか挙げておきます。 Silverlightでそれらを使うのはあまり面倒ではありませんが、私は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

関連する問題