Управление порядком сортировки списка из интерфейса администратора - PullRequest
0 голосов
/ 07 мая 2009

У меня есть список данных, которые пользователи могут контролировать порядок сортировки.

Это выглядит примерно так

Apples     /\  \/
Oranges    /\  \/
pears      /\  \/
banana     /\  \/
Pineapples /\  \/
etc        /\  \/

/ \ и / предназначены для стрелок вверх и вниз

Когда пользователь нажимает вверх, я хочу получить текущий порядок сортировки и убрать один из него (поэтому он имеет меньшее значение и будет выше в порядке сортировки.

Когда пользователь нажимает вниз, я делаю наоборот

Полагаю, мне также нужно установить, есть ли в списке что-то еще с новым значением, которое я хочу присвоить, и настроить порядок сортировки этого элемента в обратном направлении.

Кажется ли это хорошим способом для достижения этой цели?

Или есть более разумный способ?

Кто-нибудь получил пример кода. Я использую .net 3.5, поэтому linq в порядке

Список хранится в кеше памяти - IList<mycustomobj>

любые предложения с благодарностью получены

EDIT: Проблемы, о которых я беспокоюсь, - это когда изначально нет порядка сортировки - все будет равно нулю. И мой предложенный алгоритм неявно предполагает, что порядок сортировки всегда будет непрерывным. Но что происходит, когда строка удаляется? в списке порядков сортировки будет пробел, поэтому простое добавление 1 и удаление 1 могут не иметь никакого значения - как мне справиться с этим сценарием?

1 Ответ

1 голос
/ 07 мая 2009

Это способ сделать это. В моем приложении мы используем перетаскивание или одну стрелку вверх и одну стрелку вниз для перемещения выбранного элемента вверх / вниз.

Если у вас есть какое-либо свойство, определяющее порядок сортировки, когда пользователь нажимает стрелку вверх, вам просто нужно переставить позицию сортировки текущего элемента с позицией сортировки предыдущего элемента, если только это не первый элемент (в этом случае ничего не делайте). Используйте обратную логику для стрелки вниз ...

Edit:

Если у ваших товаров еще нет позиции сортировки, вы можете просто просмотреть список и назначить позицию сортировки от 1 до n. В случае удаленной строки уменьшите позицию сортировки всех следующих элементов на один.

...