السلام عليكــم ورحمـة الله وبركاتــه
اخواني الاعزاء بعد التحية......... ارجو المساعدة في طريقة ترتيب الارقام في اداة ListView لاني لم اجد الطريقة رغم البحث عن ذلك وشكر لكم
السلام عليكــم ورحمـة الله وبركاتــه
اخواني الاعزاء بعد التحية......... ارجو المساعدة في طريقة ترتيب الارقام في اداة ListView لاني لم اجد الطريقة رغم البحث عن ذلك وشكر لكم
وعليكم السلام ورحمة الله وبركاته
جرب هذا الكود
ListView1.Sorting = SortOrder.Ascending
شكرا جزيلاُ لك يا اخي فعلاً هذا هو المطلوب (جزاك الله كل خير)
العفو أخوي
وإياك يارب
شكرا لك
اخى جربت الكود الذى تكرمت بالمساعدة به و كانت لى نفس المشكلة لى listview تحتوى على ارقام الفواتير و انا مختارة نوع الحقل فى sql2005 رقم و مع ذلك الترتيب يكون كنص
فمثلا يقوم بالترتيب
1
10
11
12
بدلا من
1
2
فما الحل.....؟
فى انتظار مساعدتك
مادمت تستخدم Database استخدم ORDER BY
مثال:
Select [Field Name] From [Table Name] Order By [Sorting Field Name] Asc
بعد الـ Order By اكتب اسم الحقل الذي تريد أن تريد البيانات به
يعني اذا كنت مثلاً تريد ترتيب البيانات على حسب الاسماء أبجدياً فيكون الحقل الذي
يأتي بعد الـ Order By هو حقل الاسم.
تم تعديل هذه المشاركة بواسطة COMFORT في 15 يوليو 2009 في 18:40

قم بإرفاق البرنامج أو جزء منه و سنقوم بالتعديل عليه إن شاء الله.
تم تعديل هذه المشاركة بواسطة COMFORT في 15 يوليو 2009 في 19:23

الطريقة العادية للترتيب تعتبر الأرقام كالحروف و تعطي النتيجة التي تريد تصحيحها و لذلك يجب انشاء طريقة خاصة للترتيب و ذلك باعتبار الأعداد كأعداد. سنبدأ إن شاء الله بإنشاء كلاس تستعمل interface IComparer وسنقومه للعمل على ترتيب الأعداد.
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 [Decimal].Compare(CType(CType(x, ListViewItem).SubItems(col).Text, Integer), CType(CType(y, ListViewItem).SubItems(col).Text, Integer)) End Function End Class
قم بزيادة هذه الكلاس في آخر module و في الدالة Load لـ Form زد الكود التالي :
Dim lvic As New ListViewItemComparer(0) ListView1.ListViewItemSorter = lvic
هنا ننشئ كائن للكلاس ListViewItemComparer و نمرر رقم column الذي نريد أن نرتب محتوياته. ثم نحيل العنصر إلى إلى propertie ListViewItemSorter كي تستعملها ListView كلما كان ضروريا ترتيب المعلومات.
الدالة ListViewItemComparer.Compare تستقبل رقم السطرين الذان يجب تقرير ترتيبهما و هذه الدالة هي التي تقرر دلك فتقوم بتحويل النص إلى عدد من نوع Decimal ثم تقارن العددين وترجع الفارق بينهما.
لتغيير الترتيب أضرب الدالة Decimal.Compare في -1
Return [Decimal].Compare(CType(CType(x, ListViewItem).SubItems(col).Text, Integer), CType(CType(y, ListViewItem).SubItems(col).Text, Integer)) * -1
المشكل ينبع من الفرق بين DataGridView و ListView فالأولى تتيح لك خيار نوع محتوى كل Column و عندها الترتيب يكون صحيحا أما الثانية فنوع كل columns هو String و إدا فلا فرق عندها بين عدد و حرف و الترتيب يكون حسب الترتيب Encoding الحالي لكل character.
جربوا حل الأخ COMFORT و لكن بعد ListView1.Sorting = SortOrder.None;