Пользовательская сортировка в портале

Автор: Андрей Волков

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

Хотя описания этого метода я ранее не встречал, но уверен, что он распространен более всего. Суть проста: для сортировки портала используется не одно, а сразу четыре калькулируемых поля: текстовое и числовое поле для сортировки по возрастанию и соответственно текстовое и числовое поле для сортировки по убыванию. Раздельное использование текстового и числового поля обусловлено тем, что сортировка текстовых и числовых данных производится по разным правилам. Текст «1024» меньше чем «512», а вот число — больше. Хотя полей четыре, в каждый момент времени данные содержатся только в одном из них, поэтому остальные в сортировке не участвуют.

Для того, чтобы задать содержимое в калькулируемых полях сортировки, используются два глобальных служебных поля: одно принимает имя поля-столбца, из которого берутся значения, другое принимает тип (текст или число), а также указывает направление сортировки. Например, если нам нужно отсортировать портал по столбцу Дата по убыванию, то в первое поле передается имя поля (Дата), а во второе — тип («number desc»).

Все это осуществляется одним универсальным скриптом.

Для имплемента технологии большого мастерства не требуется. Достаточно перенести в ваш файл универсальный скрипт, в таблицы, по которым строятся порталы, перенести служебные поля (их всего 4 и имена начинаются с префикса sort_ ). Заголовки столбцов оформить как кнопки и настроить вызов скрипта с параметром «имя поля» как в прилагаемом образце.

Скачать демо-файл.

1 Комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

57 − = 50