ترتيب القيم تصاعديا ضمن الليست فيو ؟ - kafi2030 - 13-10-13
بسم الله الرحمن الرحيم
السلام عليكم
كيف لي ان اقوم بترتيب القيم التي بداخل الليست فيو، بشكل تصاعدي
قمت بجعل الخاصية المتعلقة ب
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
ارجو المساعدة
والف شكر
RE: ترتيب القيم تصاعديا ضمن الليست فيو ؟ - sooriaty03 - 13-10-13
السلام عليكم ورحمة الله وبركاته
تفضل أخي ضعه في آخر كود تعبئة الليست فيو
RE: ترتيب القيم تصاعديا ضمن الليست فيو ؟ - kafi2030 - 13-10-13
شكرا اخي
sooriaty
على اجابتك
ولكن للاسف لم تتم عملية الفرز
RE: ترتيب القيم تصاعديا ضمن الليست فيو ؟ - sooriaty03 - 13-10-13
السلام عليكم ورحمة الله وبركاته
عفوا أخي بس السطر لازم تكتبه في آخر سطر في Sub مش في البداية
RE: ترتيب القيم تصاعديا ضمن الليست فيو ؟ - kafi2030 - 13-10-13
شكرا اخي
sooriaty
على تواصلك
تم وضع السطر المذكور في اخر سطر
ولكن دون جدوى
RE: ترتيب القيم تصاعديا ضمن الليست فيو ؟ - kafi2030 - 13-10-13
السلام عليكم
بعد صبر وبحث ..........وفقت والحمد لله على ايحاد حل لفرز القيم
بعد ان تم قراءة شرح مفصل عن الاداة 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
RE: ترتيب القيم تصاعديا ضمن الليست فيو ؟ - @@أبورائد@@ - 23-10-13
السلام عليكم ورحمة الله وبركاته
بامكانك وضع هذا الكود لترتيب أي عمود تختاره بالنقر على عنوانه مع تحديد نوع الفرز تصاعدي أم تنازلي بشكل اختياري
كود :
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
السلام عليكم ورحمة الله وبركاته
|