Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Сортировка BindingList


Автор: HAL707 9.9.2009, 13:41
Привет.
Сразу к делу.
Есть список BindingList<>. В нем лежат классы MyClass.
Есть ListBox у которого DataSorce'ом является этот BindingList

Вопрос: как отсортировать данные в ListBox (вернее в BindingList)?
ListBox.IsSorted не работает, говорит нельзя изменить коллекцию, если задано свойство DataSource.

Сразу говорю, пытался наследоваться от BindingList и переопределить методы сортировки. Не помогло.
До этих методов выполнение даже не доходит...

Автор: Heinzz 9.9.2009, 17:42
Сортировать нужно не ListBox, а BindingList

Автор: Heinzz 9.9.2009, 17:42
Пример

Код

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            BindingList<MyClass> bList= new BindingList<MyClass>();
            
            bList.Add(new MyClass("Ivan", 23));
            bList.Add(new MyClass("Igor", 63));
            bList.Add(new MyClass("Anna", 13));
            bList.Add(new MyClass("Mike", 41));
            this.listBox1.DataSource = bList;

            SortBindingList(bList);
        }


        //реализация сортировки для BindingList
        private void SortBindingList(BindingList<MyClass> bList)
        {
            BindingList<MyClass> bList2 = new BindingList<MyClass>();
            IEnumerable<MyClass> e = bList.OrderBy(man => man.name);

            bList2.Clear();
            foreach (MyClass my in e)
            {
                bList2.Add(my);
                bList.Remove(my);
            }

            foreach (MyClass my in bList2)
            {
                bList.Add(my);
            }
        }
    }

    //Пример класса для листбокса
    class MyClass
    {
        public string name;
        public int age;
        public MyClass(string name, int age)
        {
            this.age = age;
            this.name = name;
        }
        public override string ToString()
        {
            return this.name + "\t" + this.age;
        }
    }


Вроде бы для BindingList сортировка обычная не реализована. 

Автор: HAL707 10.9.2009, 10:03
Все, разобрался с проблемой. Спасибо всем.

Автор: Heinzz 10.9.2009, 17:25
Цитата(HAL707 @  10.9.2009,  10:03 Найти цитируемый пост)
Все, разобрался с проблемой. Спасибо всем. 

Вручную пришлось сортировать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)