فرز البيانات في ListView

أساس باستخدام المثال السابق ، سوف نرى كيفية، البصرية الأساسية. صافي ، فرز البيانات في listview من جانب واحد من مقالاته.

المشروع قبل إضافة زرين لتحديد والذي هو النظام المطلوب. كما هو مبين في الصورة أدناه:

في وقت لاحق في شكل رمز نفسه سوف نقوم إنشاء اثنين من فئات جديدة (OrdenarPorNombre والنظام حسب الحجم)، والأحداث من الأزرار لعق نحن تعيين الخاصية ListViewItemSorter listview مع مثيل جديد من فئة المقابلة لأجل محدد. رمز غير قصير، لذلك لا يكلف تحليل من ذلك بكثير. ثم أترك كل رمز للنموذج:

 واردات System.IO
 الجمهور الفئة Form1

 خاصة الفرعية Form1_Load (الأساسية ByVal مرسل كما System.Object، _
 ه الأساسية ByVal كما System.EventArgs) يعالج MyBase.Load
 د قاتمة كما DirectoryInfo جديد ("C: \ ويندوز")
 ListView1.View = View.Details
 ListView1.FullRowSelect = صحيح

 ListView1.BeginUpdate ()
 ListView1.Items.Clear ()

 عن كل (و) هو FileInfo في d.GetFiles
 خافت البند كما ListViewItem جديد (f.Name)

 item.SubItems.Add (f.length)
 item.SubItems.Add (f.CreationTime)
 item.SubItems.Add (f.LastWriteTime)
 item.SubItems.Add (f.LastAccessTime)

 ListView1.Items.Add (البند)
 التالي
 ListView1.EndUpdate ()

 نهاية الفرعية

 خاصة الفرعية Button1_Click (الأساسية ByVal مرسل كما System.Object، _
 ه الأساسية ByVal كما System.EventArgs) مقابض Button1.Click
 "حسب الاسم
 ListView1.ListViewItemSorter = جديد ordenarPorNombre
 نهاية الفرعية

 خاصة Button2_Click الفرعية (الأساسية ByVal مرسل كما System.Object، _
 ه الأساسية ByVal كما System.EventArgs) مقابض Button2.Click
 'حسب حجم
 ListView1.ListViewItemSorter = جديد ordenarPorTamaño
 نهاية الفرعية
 نهاية الدرجة

 فئة ordenarPorNombre
 تطبق IComparer الخاص بك
 وظيفة عامة مقارنة (الأساسية ByVal X وجوه، وجوه الأساسية ByVal Y) _
 وصحيح تطبيقات System.Collections.IComparer.Compare
 خافت item1 كما ListViewItem = CType (خ، ListViewItem)
 خافت item2 كما ListViewItem = CType (ذ، ListViewItem)
 عودة String.Compare (item1.Text، item2.Text)
 نهاية وظيفة
 نهاية الدرجة
 فئة ordenarPorTamaño
 تطبق IComparer الخاص بك

 وظيفة عامة مقارنة (الأساسية ByVal X وجوه، وجوه الأساسية ByVal Y) _
 وصحيح تطبيقات System.Collections.IComparer.Compare
 خافت item1 كما ListViewItem = CType (خ، ListViewItem)
 خافت item2 كما ListViewItem = CType (ذ، ListViewItem)
 Math.Sign العودة (CLng (item1.SubItems (1) نص) - CLng (item2.SubItems (1) النص))
 نهاية وظيفة
 نهاية الدرجة

كما هو الحال دائما، وآمل أن رمز مفيدا.

11 الردود على "فرز البيانات في ListView"

  1. Bitacoras.com يقول:

    معلومات Bitacoras.com ...

    معدل في Bitacoras.com: تستخدم كأساس المثال أعلاه، وسوف نرى كيفية و Visual Basic صافي فرز البيانات listview من قبل أي من أعمدته. سيقوم المشروع السابقة إضافة زري لتحديد والذي هو أمر من .....

  2. لورا تقول:

    موافق، غرامة، ولكن ... هذا؟ تصاعدي مجرد أمر والأمر صعودا وهبوطا، وإعطاء انقر على رأس العمود

  3. أليشع يقول:

    مرحبا لورا:

    أن تأمر بالاسم في تنازلي فقط لعكس المتغيرات التي يتم إرجاعها في OrdenarPorNombre فئة ... تضطر إلى تغيير:
    عودة String.Compare (item1.Text، item2.Text)
    لذلك:
    عودة String.Compare (item2.Text، item1.Text)

    ويجب في حالة الترتيب العددي عكس علامة أرجعها حالة ordenarPorTamaño، وتغيير هذا:
    Math.Sign العودة (CLng (item1.SubItems (1) نص) - CLng (item2.SubItems (1) النص))
    لذلك:
    عودة Math.Sign () CLng (item1.SubItems (1) النص.) - CLng (. item2.SubItems (1) نص)) * -1)

    وأقول لكم أخيرا أن النظام يعطي العمود نقرة من listview لم يعلق هنا لأنني أريد أن تخصيص مادة مستقلة.

    تحيات، إليشا

  4. أوسكار ويقول:

    وكما كنت من قبل النظام في أي ميدان في تنازلي تاريخ تاريخ الإنشاء على سبيل المثال.

    • أليشع يقول:

      إضافة الفئة التالية وتعيين إلى الزر الذي تريده.

      فئة ordenarPorFechaCreacion
      تطبق IComparer الخاص بك

      وظيفة عامة مقارنة (الأساسية ByVal X وجوه، وجوه الأساسية ByVal Y) _
      وصحيح تطبيقات System.Collections.IComparer.Compare
      خافت item1 كما ListViewItem = CType (خ، ListViewItem)
      خافت item2 كما ListViewItem = CType (ذ، ListViewItem)
      عودة Date.Compare (Date.parse (item1.SubItems (2). النص)، Date.parse (item2.SubItems (2). النص))
      نهاية وظيفة
      نهاية الدرجة

  5. روكسانا يقول:

    مرحبا الناس.
    في C # سيكون كما في الجملة للنظام نفسه؟

  6. bebrafraptaug يقول:

    dobry البداية

  7. جوشوا يقول:

    في حالة ما إذا كان لدي لائحة بحيث
    23 = 5 +5 +13
    5 = 1 +1 +1 +2
    4 = 3 +1
    الخ .....
    يمكنني أن أفعل وأنا من أجل ذلك عن طريق الأرقام التي إذا نتيجة لذلك هو أنني 231 = 100 +100 +31 ليس وضعه بعد 23 = 5 +5 +13

  8. فيكتور يقول:

    جيدة بعد ظهر اليوم،

    نأسف للإزعاج، ولكن نعرف كيف يمكنك فرز بواسطة عمودين في آن واحد؟ شيء من هذا القبيل:
    XYZ
    ابا -> 1
    ايه -> 2
    لب - 3>

    وغادر:

    XYZ
    لب - 3>
    ابا -> 1
    ايه -> 2

    سوبر ممتنا لو انك تساعد وإذا لم يكن،. شكرا لنشر المعلومات نفسها التي كانت مفيدة لي أيضا

  9. وقالت سنثيا:

    وإذا كنت تريد حتى الآن ..... والتي ليست فقط من قبل تاريخ الإنشاء

تعليق