[.NET] GridViewのソーティング

ListView.ViewをGridViewにするとExcel風になる。GridViewはカラムの幅調整、入れ替えなどができるのに、なぜかソート機能は省かれている。msdnにはheaderをしたときExcel風なソート表現を実装した例が載っている。
How to: Sort a GridView Column When a Header Is Clicked
http://msdn.microsoft.com/en-us/library/ms745786.aspx

ソート機能はICollectionViewのSortDescriptionを使って実装する。

private void Sort(string sortBy, ListSortDirection direction)
{
    ICollectionView dataView =
      CollectionViewSource.GetDefaultView(lv.ItemsSource);

    dataView.SortDescriptions.Clear();
    SortDescription sd = new SortDescription(sortBy, direction);
    dataView.SortDescriptions.Add(sd);
    dataView.Refresh();
}

ICollectionViewインタフェースは、 System.ComponentModel namespaceで定義されているのでusing System.ComponentModelが必要。
手元で作っているObservableCollectionのインスタンスにも同じような手順を適用してソートできた。

           listview.ItemsSource = dirinfo.CookieList; //右辺はObservableCollectionのインスタンス
            ICollectionView view = CollectionViewSource.GetDefaultView(listview.ItemsSource);
            view.SortDescriptions.Clear();
            view.SortDescriptions.Add(new SortDescription("domainname", ListSortDirection.Ascending));
広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。