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

كيف لي ان اقوم بترتيب القيم التي بداخل الليست فيو، بشكل تصاعدي

قمت بجعل الخاصية المتعلقة ب
sorting= accending

ولكن لم الحظ اي تأثير لتلك الخاصية على القيم التي بالليست فيو
علما ان الكود الدي تم تعبئة الليست فيو به
كود :
Sub PopulateListView()

        With ListView1
            .Clear()
            .View = View.Details
            .Columns.Add("Area_id", 0, HorizontalAlignment.Center)
            .Columns.Add("اســـم المنطقـــة", 390, HorizontalAlignment.Left)

            .GridLines = False
            .FullRowSelect = True
            .Cursor = Cursors.Hand
            .BackColor = System.Drawing.ColorTranslator.FromHtml(My_back_Color_Listview)
            .ForeColor = Color.Black


            Dim Lst As New ListViewItem
            Dim List = From B In db.Fixed_Areas Select B

            For Each x In List

                Lst = New ListViewItem(x.Area_id)
                Lst.SubItems.Add(x.Area)
                .Items.Add(Lst)
            Next
        End With

    End Sub

ارجو المساعدة
والف شكر


الملفات المرفقة صورة/صور
       
الرد
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته

تفضل أخي ضعه في آخر كود تعبئة الليست فيو

كود :
ListView1.Sort()
الرد
تم الشكر بواسطة: @@أبورائد@@
#3
شكرا اخي
sooriaty

على اجابتك

ولكن للاسف لم تتم عملية الفرز


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#4
السلام عليكم ورحمة الله وبركاته

عفوا أخي بس السطر لازم تكتبه في آخر سطر في Sub مش في البداية
الرد
تم الشكر بواسطة: @@أبورائد@@
#5
شكرا اخي
sooriaty
على تواصلك

تم وضع السطر المذكور في اخر سطر

ولكن دون جدوى


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة: @@أبورائد@@
#6
السلام عليكم
بعد صبر وبحث ..........وفقت والحمد لله على ايحاد حل لفرز القيم
بعد ان تم قراءة شرح مفصل عن الاداة Listview
في منتدى الفريق العربي للبرمجة للاخ Sniper

يتم عن طريق كتابة
كود :
Sub PopulateListView()

        With ListView1
            .Clear()
            .View = View.Details
            .Columns.Add("Area_id", 0, HorizontalAlignment.Center)
            .Columns.Add("اســـم المنطقـــة", 372, HorizontalAlignment.Left)

            .GridLines = False
            .FullRowSelect = True
            .Cursor = Cursors.Hand
            .BackColor = System.Drawing.ColorTranslator.FromHtml(My_back_Color_Listview)
            .ForeColor = Color.Black

            Dim Lst As New ListViewItem
            Dim List = From B In db.Fixed_Areas Select B
            For Each x In List
                Lst = New ListViewItem(x.Area_id)
                Lst.SubItems.Add(x.Area)
                .Items.Add(Lst)
            Next
        End With

        ListView1.Sorting = SortOrder.Ascending
        ListView1.ListViewItemSorter = New ListViewItemComparer(1)
        ListView1.Sort()

    End Sub

ويتم انشاء كلاس، يتم وضع فيه
كود :
Public Class ListViewItemComparer
    Implements IComparer
    Private col As Integer

    Public Sub New()
        col = 0
    End Sub

    Public Sub New(ByVal column As Integer)
        col = column
    End Sub

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
        Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
    End Function

End Class


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة: sooriaty03 , @@أبورائد@@
#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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سؤال لاخفاء عمود في الليست فيو Emam emam 2 71 25-11-18, 12:10 AM
آخر رد: Emam emam
  ترتيب السجلات داخل الكريستل ريبورت makky 0 48 19-11-18, 07:48 PM
آخر رد: makky
  ضبط وضع الكتابة داخل الليست بوكس ابو روضة 4 124 13-11-18, 02:23 AM
آخر رد: ابو روضة
Big Grin يرجى المساعدة في ترتيب البيانات في الداتا جريد فيو ahmadpal 2 84 05-11-18, 10:41 PM
آخر رد: ahmadpal
  ترتيب النوافذ المفتوحة فى البرنامج atef_020 3 91 01-11-18, 01:30 AM
آخر رد: elgokr
  [VB.NET] كيفية عرض column الليست فيو عموديا و تفعيل خاصية الشيك بوكس larbihamri 0 70 22-10-18, 09:38 AM
آخر رد: larbihamri
  كيف اجعل الكلمات تحت بعضها فى الليست بوكس ابو روضة 5 267 16-07-18, 01:34 AM
آخر رد: elgokr
  ترتيب الملفات في المجلد حسب تاريخ التعديل مع حذف الاقدم atefkhalf2004 3 221 06-06-18, 04:56 PM
آخر رد: mrnooo2000
  [سؤال] اختيار عناصر من الليست بوكس وإضافتها إلى قاعدة البيانات waelalmsry75 2 232 11-01-18, 09:11 AM
آخر رد: waelalmsry75
  [سؤال] جعل النص فى الوسط داخل الليست بوكس ابو روضة 6 372 10-01-18, 08:39 PM
آخر رد: ابو روضة

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم