تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] ترتيب القيم تصاعديا ضمن الليست فيو ؟
#7
السلام عليكم ورحمة الله وبركاته

بامكانك وضع هذا الكود لترتيب أي عمود تختاره بالنقر على عنوانه مع تحديد نوع الفرز تصاعدي أم تنازلي بشكل اختياري
كود :
Public Class Form1

    Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
        ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Descending)
    End Sub

End Class

Public Class ListViewItemComparer
    Implements IComparer
    Private col As Integer
    Private ord As SortOrder

    Public Sub New()
        col = 0
    End Sub

    Public Sub New(ByVal column As Integer, Optional ByVal order As SortOrder = SortOrder.Ascending)
        col = column
        ord = order
    End Sub

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
        If ord = SortOrder.Ascending Then
            Return String.Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
        Else
            Return String.Compare(CType(y, ListViewItem).SubItems(col).Text, CType(x, ListViewItem).SubItems(col).Text)
        End If
    End Function

End Class

السلام عليكم ورحمة الله وبركاته




السلام عليكم ورحمة الله وبركاته

وهذه طريقة أخرى لو أردت عند كل ضغطة على عنوان العمود يبدل بين التصاعدي والتنازلي (شبيه بـ DataGridView)
كود :
Public Class Form1

    Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
        If Val(ListView1.Columns(e.Column).Tag) = 0 Then
            ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Ascending)
            ListView1.Columns(e.Column).Tag = 1
        Else
            ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Descending)
            ListView1.Columns(e.Column).Tag = 0
        End If
    End Sub

End Class

Public Class ListViewItemComparer
    Implements IComparer
    Private col As Integer
    Private ord As SortOrder

    Public Sub New()
        col = 0
    End Sub

    Public Sub New(ByVal column As Integer, Optional ByVal order As SortOrder = SortOrder.Ascending)
        col = column
        ord = order
    End Sub

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
        Select Case ord
            Case SortOrder.Ascending
                Return String.Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
                CType(x, ListViewItem).Tag = 1
            Case SortOrder.Descending
                Return String.Compare(CType(y, ListViewItem).SubItems(col).Text, CType(x, ListViewItem).SubItems(col).Text)
                CType(x, ListViewItem).Tag = 0
            Case SortOrder.None
                If Val(CType(x, ListViewItem).Tag) = 0 Then
                    Return String.Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
                    CType(x, ListViewItem).Tag = 1
                Else
                    Return String.Compare(CType(y, ListViewItem).SubItems(col).Text, CType(x, ListViewItem).SubItems(col).Text)
                    CType(x, ListViewItem).Tag = 0
                End If
        End Select
    End Function
End Class

السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة: sooriaty03 , hoob computer


الردود في هذا الموضوع
RE: ترتيب القيم تصاعديا ضمن الليست فيو ؟ - بواسطة @@أبورائد@@ - 23-10-13, 02:50 AM


التنقل السريع :


يقوم بقرائة الموضوع: