プロが教える店舗&オフィスのセキュリティ対策術

SQL文では

"ORDER BY [項目1] ASC, [項目2] ASC"

というように並び替えの優先順位に沿ってソートする事が出来ますが、
ListViewで同じようにソートすることは可能でしょうか?
1つの項目のみを対象にしたソートなら出来るのですが…

バージョンはVB.NETになります。
ご教授よろしくお願い致します。

A 回答 (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
    • good
    • 0
この回答へのお礼

丁寧にコードまで書いていただき、ありがとうございます。
お陰様で問題を解決できました。

それにしても、本当にSQL文のようなソートをしてくれるメソッドがあるんですね。少し驚きました。

お礼日時:2005/04/28 17:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A