データグリッド内の数値データを正しく並べ替える簡単な方法はありますか?Silverlight Datagrid数値ソート
説明 - データ1,5,10,2の列ヘッダーをクリックすると、テキスト(1,10,2,5)としてソートされます。
ICollectionViewを実装して独自のカスタムソートを作成できることを読んだことがあります。私はその道を行く前に、もっと簡単な方法がないことを確認したいと思います。
データグリッド内の数値データを正しく並べ替える簡単な方法はありますか?Silverlight Datagrid数値ソート
説明 - データ1,5,10,2の列ヘッダーをクリックすると、テキスト(1,10,2,5)としてソートされます。
ICollectionViewを実装して独自のカスタムソートを作成できることを読んだことがあります。私はその道を行く前に、もっと簡単な方法がないことを確認したいと思います。
同僚は私の問題を解決しました。ラッパーにソースオブジェクトをラップすることによって、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);
}
}
}
あなたが望むのは、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