|
■No57321 (だうん中 さん) に返信 > DataViewなども調べてみたのですが、いまいち使い方が分かりませんでしたものでして。
DateView は、 Dim view As New DataView(listData1.Tables(0)) または Dim view As DataView = listData1.DefaultView のようにして取得できます。 (DataSet/DataTable をデータバインドしている場合には、自動的に DefaultView が使われています)
並び替え指定は、SQL の ORDER BY 句のように view.Sort = "Code" と指定すれば OK です。降順にしたいなら "Code DESC" のように DESC を付与します。 複数列での並び替えが必要な場合は "Col1, Col2" のようにカンマで区切って指定してください。
データバインドしている場合は、.DefaultView.Sort を変更することで並び変わったことを確認できますが、 もしもコードで列挙したい場合には、 For Each rowView As DataRowView In view MsgBox( rowView("Code") ) Next または For n As Integer = 0 To view.Count - 1 MsgBox( view(n)("Code") ) Next のようにすることで、並び替えた順にデータを取り出すことができます。
ただし上記のコードでは、DataTable を列挙して DataRow を得ているのではなく、 DataView を列挙して DataRowView を得ている事に注意してください。 (DataView は、DataTable 内の並び順を変化させるわけではありません)
もしも(DataRowView ではなく)元の DataRow への参照が必要な場合には、 DataRowView の Row プロパティを使うことができます。 たとえば、型付データセットを使っているような場合には For Each rowView As DataRowView In view Dim row As DataSet1.Table1Row = DirectCast(rowView.Row, DataSet1.Table1Row) MsgBox( row.Code ) Next のように記述できます。
ちなみに DataView では、Sort プロパティによる並び替えだけではなく RowFilter プロパティ/ RowStateFilter プロパティによるフィルタリング機能も 有しています。余力があればヘルプ等で確認しておいてください。
|