الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماهي طريقة الترتيب في Listview

بدأه anatalal في 5 فبراير 2009 · 9 رد · 1,255 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني الاعزاء بعد التحية......... ارجو المساعدة في طريقة ترتيب الارقام في اداة ListView لاني لم اجد الطريقة رغم البحث عن ذلك وشكر لكم

#2

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

جرب هذا الكود

ListView1.Sorting = SortOrder.Ascending
#3

شكرا جزيلاُ لك يا اخي فعلاً هذا هو المطلوب (جزاك الله كل خير)

#4

العفو أخوي

وإياك يارب

شكرا لك

#5

اخى جربت الكود الذى تكرمت بالمساعدة به و كانت لى نفس المشكلة لى listview تحتوى على ارقام الفواتير و انا مختارة نوع الحقل فى sql2005 رقم و مع ذلك الترتيب يكون كنص

فمثلا يقوم بالترتيب

1

10

11

12

بدلا من

1

2

فما الحل.....؟

فى انتظار مساعدتك

#6

مادمت تستخدم Database استخدم ORDER BY

مثال:

Select [Field Name] From [Table Name] Order By [Sorting Field Name] Asc

بعد الـ Order By اكتب اسم الحقل الذي تريد أن تريد البيانات به

يعني اذا كنت مثلاً تريد ترتيب البيانات على حسب الاسماء أبجدياً فيكون الحقل الذي

يأتي بعد الـ Order By هو حقل الاسم.

تم تعديل هذه المشاركة بواسطة COMFORT في 15 يوليو 2009 في 18:40

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#7

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

اخى COMFORT جربت ما نصحتنى به مع العلم ان الحقل نوعه رقم و ليس نص و كانت النتيجة واحدة كما بالصورةالمرفقة

post-40783-1247674768_thumb.jpg

#8

قم بإرفاق البرنامج أو جزء منه و سنقوم بالتعديل عليه إن شاء الله.

تم تعديل هذه المشاركة بواسطة COMFORT في 15 يوليو 2009 في 19:23

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#9

الطريقة العادية للترتيب تعتبر الأرقام كالحروف و تعطي النتيجة التي تريد تصحيحها و لذلك يجب انشاء طريقة خاصة للترتيب و ذلك باعتبار الأعداد كأعداد. سنبدأ إن شاء الله بإنشاء كلاس تستعمل 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
#10

المشكل ينبع من الفرق بين DataGridView و ListView فالأولى تتيح لك خيار نوع محتوى كل Column و عندها الترتيب يكون صحيحا أما الثانية فنوع كل columns هو String و إدا فلا فرق عندها بين عدد و حرف و الترتيب يكون حسب الترتيب Encoding الحالي لكل character.

جربوا حل الأخ COMFORT و لكن بعد ListView1.Sorting = SortOrder.None;

مواضيع مشابهة