PDA

View Full Version : مرتب کردن اطالاعات بر اساس حروف الفبا در comboBox



rezaiy.ali
دوشنبه 26 آذر 1386, 12:12 عصر
با سلام
من اطلاعاتم را از View می خونم و داخل comboBox میریزم.
حالا چطو رمی تونم اطلاعات داخل comboBox را بر اساس حروف الفبا مرتب کنم.
با تشکر

hassan razavi
دوشنبه 26 آذر 1386, 12:18 عصر
Combo خاصیتی به نام Sorted داره که با true کردن آن ، خودش آیتمها رو بر اساس حروف الفبا Sort میکنه

mamali_programer
دوشنبه 26 آذر 1386, 12:29 عصر
سلام
اگر بخواهیم که مثلا برعکس سورت کنه باید چه کاری انجام بدیم

sinpin
دوشنبه 26 آذر 1386, 12:56 عصر
سلام
اگر بخواهیم که مثلا برعکس سورت کنه باید چه کاری انجام بدیم

باید کلاسی که به کامبوباکس بایند شده اینترفیس IComparable رو پیاده سازی کنه و متد CompareTo اون رو به شکلی که دوست دارید تغییر بدید...

sinpin
دوشنبه 26 آذر 1386, 12:58 عصر
یک مثال از آدرس : http://www.osix.net/modules/article/?id=672 (http://www.osix.net/modules/article/?id=672)

What if we wanted to order them descending rather than ascending?
Well, the CompareTo() method returns an int value: positive, zero or negative if the two objects are respectively minor/major, equal, major/minor.
So to do the descending order we could just multiply the result of the CompareTo() method by -1 and write the User class like this:



class User : IComparable {
private string firstName;
private string lastName;

public User(string fn, string ln) {
this.firstName=fn;
this.lastName=ln;
}

public int CompareTo(object obj) {
User u=(User)obj;
if (this.lastName==u.lastName) {
return -1*this.firstName.CompareTo(u.firstName);
} else {
return -1*this.lastName.CompareTo(u.lastName);
}
}

public override string ToString() {
return lastName+" "+firstName;
}
}

sinpin
دوشنبه 26 آذر 1386, 13:12 عصر
سلام
اگر بخواهیم که مثلا برعکس سورت کنه باید چه کاری انجام بدیم

یک روش آسونتر هم داره : این که لیست سورت شده در کامبوباکس رو مثلا به یک ArrayList انتقال بدید و بعد متد Reverse() رو call کنید :


ArrayList list = ArrayList.Adapter(comboBox1.Items);
list.Sort();
To reverse, call list.Reverse();

rezaiy.ali
دوشنبه 26 آذر 1386, 13:53 عصر
با تشکر از شما hassan razavi (http://barnamenevis.org/forum/member.php?u=5419)
اما من اطلاعات را از View می خونم و View دو تا خروجی داره - اولی برای dispalyMember و دومی بار valueMember .
زمانی که از خاصیت sotr استفاده می کنم اجاز چنین کاری را نمیده.

rezaiy.ali
پنج شنبه 29 آذر 1386, 15:35 عصر
دوستان کسی نیست که راهنمایی کند؟

hassan razavi
پنج شنبه 29 آذر 1386, 15:51 عصر
اگه از DataView استفاده میکنید از خاصیت Sort خود DataView استفاده کنید و به هر صورتی که دوست دارید (صعودی - نزولی) داده رو Sort کنید و بعد به Comno متصل کنید. البته من تاحالا تست نکردم که بعد از اتصال ، با تغیر Sort یک DataView ، روی Combo اعمال میشه یا نه؟