- PR -

LINQ結果を表示するデータグリッドビューについて

1
投稿者投稿内容
OYJ
会議室デビュー日: 2008/11/08
投稿数: 7
投稿日時: 2008-11-08 12:59
いつもお世話になります。
LINQ to DataSetではまっております。
環境:VS2008Pro 言語:VB2008

社員一覧表をデータグリッドビューに表示しています。
ここに社員カナ名の絞り込み機能をつけました。
このとき、データセットからLINQを利用して以下のような処理を行なった結果、データグリッドビューにはうまく表示されるのですが、ソート機能(カラムヘッダーをクリック)ができなくなりました。

Dim staff = From a In Me.StaffDataSet.stf_tbl _
Where a.stf_name Like txtStfName.Text & "*"
Stf_tblDataGridView.DataSource = staff.ToList()

どなたか、ご教授願えましたら幸いです。
よろしくお願いいたします。

[ メッセージ編集済み 編集者: OYJ 編集日時 2008-11-08 13:04 ]
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-11-10 14:19
DataGridView のソート機能はデータソースが IBindingList インタフェースを実装していて、IBindingList.SupportsSorting プロパティが true を返す場合にのみ機能したと記憶しています。(MSDN で探したのですが、はっきり書いてあるページは見つけられませんでした。)

ToList の戻り値は List<T> ジェネリッククラスで、このクラスは IBindingList インタフェースを実装していないのでソートは機能しません。

私の知る限り、ソートできるようにするには、IBindingList を実装するカスタムクラスを作成するしかないと思います。以下の URL が参考になると思います。

http://codezine.jp/article/detail/1159?p=1

私ももっと簡単な方法があったら知りたいと思っているところなのですが…
1

スキルアップ/キャリアアップ(JOB@IT)