Re[2]: Ошибка в BLToolkit.ComponentModel.BindingListImpl
От: Rollback Россия  
Дата: 17.03.08 05:55
Оценка: 2 (1)
В общем, я пока остановился на такой реализации:
        public int GetItemSortedPosition(int index, object sender)
        {
            IComparer comparer = GetSortComparer();
            if (comparer == null)
                return index;
            if (_list.Count > 1)
                for (int i = 0; i < _list.Count; i++)
                    if (i != index)
                    {
                        if (comparer.Compare(_list[i], sender) > 0)
                        {
                            if (i > 0)
                                return i - 1;
                            return i;
                        }
                    }
            return _list.Count - 1;
        }


ЗЫ: я не сказал в чём ошибка

Имеем отсортированный список. Значения поля, по которому идёт сортировка:
1, 1, 2, 3

Если производим замену объекта с индексом 0, на объект со значением поля 2, то он встанет по индексу 3, а должен по индексу 2.

Получается:
1, 2, 3, 2

А должно быть:
1, 2, 2, 3

Т. е. возвращается индекс на единицу больше правильного.

Замену объекта произвожу командой myBindingSource[0] = myObj;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.