Urutkan data dalam ListView

dasar menggunakan contoh sebelumnya , kita akan melihat bagaimana, visual basic. bersih , mengurutkan data di ListView oleh salah satu kolom nya.

Proyek sebelum Anda menambahkan dua tombol untuk memilih yang merupakan urutan yang diinginkan. Seperti terlihat pada gambar di bawah ini:

Kemudian dalam kode bentuk yang sama kita akan membuat dua kelas baru (OrdenarPorNombre dan Ketertiban Size), dan peristiwa tombol menjilat kita mengatur properti ListView ListViewItemSorter dengan contoh baru dari kelas yang sesuai dengan urutan yang dipilih. Kode ini pendek, sehingga tidak membutuhkan biaya analisis banyak. Lalu aku meninggalkan semua kode dalam bentuk:

 Impor System.IO
 Public Class Form1

 Private Sub Form1_Load (ByVal sender Sebagai System.Object, _
 ByVal e Sebagai System.EventArgs) Handles MyBase.Load
 Dim d Sebagai DirectoryInfo Baru ("C: \ Windows")
 ListView1.View = View.Details
 ListView1.FullRowSelect = True

 ListView1.BeginUpdate ()
 ListView1.Items.Clear ()

 Untuk Setiap f Sebagai Fileinfo Dalam d.GetFiles
 Dim Item As New ListViewItem (f.Name)

 item.SubItems.Add (f.length)
 item.SubItems.Add (f.CreationTime)
 item.SubItems.Add (f.LastWriteTime)
 item.SubItems.Add (f.LastAccessTime)

 ListView1.Items.Add (item)
 Berikutnya
 ListView1.EndUpdate ()

 End Sub

 Private Sub Button1_Click (ByVal sender Sebagai System.Object, _
 ByVal e Sebagai System.EventArgs) Menangani Button1.Click
 'Urutkan menurun menurut nama
 ListView1.ListViewItemSorter = New ordenarPorNombre
 End Sub

 Private Sub Button2_Click (ByVal sender Sebagai System.Object, _
 E ByVal Sebagai System.EventArgs) Menangani Button2.Click
 'Urut berdasarkan ukuran
 ListView1.ListViewItemSorter = New ordenarPorTamaño
 End Sub
 Akhir Kelas

 Kelas ordenarPorNombre
 Mengimplementasikan IComparer
 Public Function Bandingkan (ByVal x Sebagai Obyek, ByVal y Sebagai Obyek) _
 As Integer Implements System.Collections.IComparer.Compare
 Dim item1 Sebagai ListViewItem = CType (x, ListViewItem)
 Dim item2 Sebagai ListViewItem = CType (y, ListViewItem)
 Kembali String.Compare (item1.Text, item2.Text)
 End Function
 Akhir Kelas
 Kelas ordenarPorTamaño
 Mengimplementasikan IComparer

 Public Function Bandingkan (ByVal x Sebagai Obyek, ByVal y Sebagai Obyek) _
 As Integer Implements System.Collections.IComparer.Compare
 Dim item1 Sebagai ListViewItem = CType (x, ListViewItem)
 Dim item2 Sebagai ListViewItem = CType (y, ListViewItem)
 Math.Sign Kembali (CLng (item1.SubItems (1) Teks) -.. CLng (item2.SubItems (1) Text))
 End Function
 Akhir Kelas

Seperti biasa, saya berharap kode ini akan sangat berguna.

11 Responses to "Sorting Data di ListView"

  1. Bitacoras.com mengatakan:

    Informasi Bitacoras.com ...

    Laju Bitacoras.com: menggunakan sebagai dasar contoh di atas, kita akan melihat bagaimana, visual basic Data semacam Bersih ListView oleh salah satu kolom tersebut.. Proyek sebelumnya akan menambah dua tombol untuk memilih adalah urutan .....

  2. Laura bilang:

    Ok, baik, tapi ... ini hanya urutan, dan untuk memesan atas dan ke bawah, memberikan klik pada header kolom?

  3. Elisa mengatakan:

    Hi Laura:

    Untuk memesan namanya dalam turun hanya perlu membalikkan variabel yang dikembalikan di kelas OrdenarPorNombre ... Anda harus mengubah:
    Kembali String.Compare (item1.Text, item2.Text)
    untuk ini:
    Kembali String.Compare (item2.Text, item1.Text)

    dan dalam kasus urutan numerik harus membalikkan tanda kembali oleh kasus ordenarPorTamaño, mengubah ini:
    Math.Sign Kembali (CLng (item1.SubItems (1) Teks) -.. CLng (item2.SubItems (1) Text))
    untuk ini:
    Kembali Math.Sign () CLng (item1.SubItems (1) Teks.) - CLng (. Item2.SubItems (1) Text)) * -1)

    dan akhirnya memberitahu Anda bahwa untuk memberikan kolom Klik dari ListView tidak berkomentar disini karena saya ingin mengabdikan sebuah artikel terpisah.

    Salam, Elisa

  4. Oscar mengatakan:

    Dan seperti yang Anda order by bidang apapun dalam turun date Tanggal Dibuat misalnya.

    • Elisa mengatakan:

      Tambahkan kelas berikut dan menetapkan ke tombol yang Anda inginkan.

      Kelas ordenarPorFechaCreacion
      Mengimplementasikan IComparer

      Public Function Bandingkan (ByVal x Sebagai Obyek, ByVal y Sebagai Obyek) _
      As Integer Implements System.Collections.IComparer.Compare
      Dim item1 Sebagai ListViewItem = CType (x, ListViewItem)
      Dim item2 Sebagai ListViewItem = CType (y, ListViewItem)
      Kembali Date.Compare (Date.parse (item1.SubItems (2). Teks), Date.parse (item2.SubItems (2). Teks))
      End Function
      Akhir Kelas

  5. Roxana mengatakan:

    Halo orang.
    di C # sebagai akan menjadi kalimat untuk urutan yang sama?

  6. bebrafraptaug mengatakan:

    dobry awal

  7. Yosua mengatakan:

    dalam kasus jika saya memiliki daftar jadi
    23 = 5 +5 +13
    5 = 1 +1 +1 +2
    4 = 3 +1
    dll .....
    Bisa saya lakukan karena saya memesan dengan angka-angka yang jika hasilnya adalah saya 231 = 100 +100 +31 tidak menaruhnya setelah 23 = 5 +5 +13

  8. Victor bilang:

    Selamat siang,

    Maaf atas ketidaknyamanan ini, tapi akan tahu bagaimana Anda dapat mengurutkan berdasarkan dua kolom sekaligus? seperti ini:
    XYZ
    aba -> 1
    baa -> 2
    b -> 3

    dan kiri:

    XYZ
    b -> 3
    aba -> 1
    baa -> 2

    Super berterima kasih jika Anda bisa membantu dan jika tidak, terima kasih untuk posting informasi yang sama yang berguna bagi saya juga.

  9. Cinthia mengatakan:

    Dan jika Anda ingin berkencan ..... yang tidak hanya berdasarkan tanggal pembuatan

Komentar