2010-03-02 3 views
0

Я разрабатываю веб-приложение, которое отображает список продуктов (например, 10 элементов) для пользователя. Пользователь имеет возможность сортировать результат по цене, бренду и т. Д. Данные загружаются из базы данных, и это довольно маленький список. Как сортировать результаты по их атрибутам, которые являются постоянными. Просветите меня при реализации сортировки на стороне клиента . dojo toolkit предлагает что угодно для сортировки небольшого списка на основе пользовательского ввода.Реализация сортировки на стороне клиента после загрузки

Причины, почему я убежден в стороне клиента сортировки являются:

  • Результирующий набор мал, Шифрование до 10 пунктов и могут быть отображены на одной странице.
  • Во-вторых, все атрибуты элемента (для сортировки) доступны на стороне клиента и не нужны базы данных.

Исправьте меня, если я ошибаюсь; Также, пожалуйста, дайте мне знать, есть ли какие-либо проблемы в этом подходе/я пропущу что-нибудь важное?

Ищет ценные комментарии.

Заранее спасибо.

EDIT: Чтобы быть точным, я работаю над созданием WishList, и у него есть только выбранные элементы. Пользователь имеет возможность сортировать по цене (от низкого до высокого или наоборот), фирменное наименование (A-Z или Z-A). Я буду отображать всю строку, и мне нужно предоставить сортировку по всем атрибутам строки на основе выбора со списком. Могу ли я выполнить это с помощью dojo AJAX или явно JavaScript?

ответ

1

Возможно, вы захотите использовать AJAX для этого, потому что если пользователь сортирует другой столбец, например. цена, ей будет нужен самый дешевый продукт из всех, а не только тот, который вы показываете. Я не уверен, что Dojo имеет для этого Ajax, но в прототипе, это довольно легко:

http://prototypejs.org/learn/introduction-to-ajax

Если вы действительно хотите только сортировать элементы, которые в настоящее время отображается, используйте Array.sort:

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/sort

Пусть ваши элементы отображаются в виде строк в таблице. Используя прототип, вы можете собрать их в массиве так:

var items = $$('tr.item'); 

Затем, вы должны использовать метод сортировки для сортировки items массива:

items.sort(function (i1, i2) { 
    return price(i1) - price(i2); 
}) 

Затем замените содержимое таблицы :

var t = $$('table.items'); 
t.update(); 
items.each(function (i) { t.appendChild(i); }); 
+0

Большое спасибо за ответ. Хотя у меня была начальная трудность в понимании вашего кода, я понял это :). Если это основано на многих атрибутах этого объекта продукта, а не на цене? – chong

+0

Замените цену тем, что хотите отсортировать. Вы можете даже сделать этот один из параметров вашей функции сортировки таблиц, например function sort_items (by) {... items.sort (function (i1, i2) {return by (i1) - by (i2);}); ...}. PS: Если бы это ответили на ваш вопрос, не могли бы вы отметить его как принятый ответ? Благодаря :) – allyourcode

Смежные вопросы