PDA

View Full Version : سوال: مرتب کردن ستونهای ListView



oldboy
شنبه 17 مرداد 1388, 13:05 عصر
سلام دوستان.
من تو برنامم یه ListView دارم که حالت نمایش اونو روی Details قرار دادم.
حالا می خوام برنامه رو طوری کنم که کاربر بتونه با کلیک روی تیتر هر ستون، ListView رو بر حسب اون ستون مرتب کنه.
تو توابع و خاصیت های ListView فقط تابع Sort و خاصیت Sorting رو پیدا کردم ولی با اینا روی تیتر هر ستون که کلیک می کنم فقط بر حسب ستون اول مرتب می شه.
اگه کسی می دونه باید چی کار کنم ممنون میشم اگه راهنماییم کنه.

Reza_Yarahmadi
شنبه 17 مرداد 1388, 16:05 عصر
اگر عناصر خاصیت View رو برابر Details گذاشتید میتونید به صورت زیر عمل کنید:

listView1.Sorting = System.Windows.Forms.SortOrder.Ascending;
listView1.Sort();
//OR
listView1.Sorting = System.Windows.Forms.SortOrder.Descending;
listView1.Sort();
این مرتب سازی بر اساس ستون اصلی آیتمها ، مرتب سازی رو انجام میده.

oldboy
شنبه 17 مرداد 1388, 20:43 عصر
خیلی ممنون.
نمی شه بر حسب هر ستونی که می خوایم مرتب سازی رو انجام بدیم؟؟؟ (مثل Windows Explorer که وقتی نمایش اون رو به صورت Details قرار می دیم، با کلیک روی تیتر هر ستون، بر حسب اون ستون مرتب میشه.)

Atena_k
یک شنبه 18 مرداد 1388, 10:22 صبح
سلام
شما باید ListViewItemSorter را برای ListView تنظیم کنید.برای این منظور یک کلاس ایجاد کنید و اینترفیس IComparer را درون آن پیاده سازی کنید.سپس درون متد مورد نظر مقایسه ها را طبق نیتز انجام بدین.ودرنهایت مقدار خاصیت ListViewItemSorter را برابر با نمونه ای از کلاسی که ایجاد کردید قرار دهید.
برای کنترل بیشتر می توانید مقادیری را هم به کلاس جدید پاس بدهید تا بتوانید کنترل بیشتری بر روی نحوه عمل مقایسه داشته باشید.