• ベストアンサー

ListViewのソートについて

SQL文では "ORDER BY [項目1] ASC, [項目2] ASC" というように並び替えの優先順位に沿ってソートする事が出来ますが、 ListViewで同じようにソートすることは可能でしょうか? 1つの項目のみを対象にしたソートなら出来るのですが… バージョンはVB.NETになります。 ご教授よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

もっと効率のよいやり方があるのかもしれませんが... =============================== Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load 'データ作成 Dim DT As DataTable = New DataTable DT.Columns.Add("Field1", GetType(String)) DT.Columns.Add("Field2", GetType(String)) DT.Columns.Add("Field3", GetType(String)) For i As Integer = 1 To 10 Dim row As DataRow = DT.NewRow() row("Field1") = i row("Field2") = Rnd().ToString row("Field3") = Rnd().ToString DT.Rows.Add(row) Next 'リストビュー生成 With Me.ListView1 .Items.Clear() .View = View.Details .GridLines = True .CheckBoxes = False .FullRowSelect = True .Columns.Clear() With .Columns .Add("Field1", 100, HorizontalAlignment.Left) .Add("Field2", 100, HorizontalAlignment.Left) .Add("Field3", 100, HorizontalAlignment.Left) End With For Each row As DataRow In DT.Rows Dim lst As ListViewItem = New ListViewItem(New String() {CType(row(0), String), CType(row(1), String), CType(row(2), String)}) Me.ListView1.Items.Add(lst) Next End With End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim DT As DataTable = New DataTable DT.Columns.Add("Field1", GetType(String)) DT.Columns.Add("Field2", GetType(String)) DT.Columns.Add("Field3", GetType(String)) For Each lst As ListViewItem In Me.ListView1.Items Dim row As DataRow = DT.NewRow() row(0) = lst.SubItems(0).Text row(1) = lst.SubItems(1).Text row(2) = lst.SubItems(2).Text DT.Rows.Add(row) Next 'ソート Dim SortedRows() As DataRow = DT.Select("", "Field3 ASC, Field1 ASC") 'リストビュー再描画 Me.ListView1.Items.Clear() For Each newrows As DataRow In SortedRows Dim lst As ListViewItem = New ListViewItem(New String() {CType(newrows(0), String), CType(newrows(1), String), CType(newrows(2), String)}) Me.ListView1.Items.Add(lst) Next End Sub

wakatori
質問者

お礼

丁寧にコードまで書いていただき、ありがとうございます。 お陰様で問題を解決できました。 それにしても、本当にSQL文のようなソートをしてくれるメソッドがあるんですね。少し驚きました。

関連するQ&A