в этой теме мне хотелось бы обсудить тему кастомного выведения списка записей.
как известно, на сайте у нас нет стандартных лейаутов, и все приходится пилить в ручную (что и есть один из наших програмистских хлебов).
сегодня столкнулся с примером раскрывающегося многоуровневого списка записей, и это заставило меня задуматься: а что есть такой список?
давайте начну от того, в каком виде мы может выводить списки:
(1) традиционный - это список записей, обязательно (или желательно) с пагинацией, часто с возможностью фильтрации выборки по атрибуту записи плюс иногда есть функционал по упорядовачиванию списка.
(2) необычные способы визуализации списка: список в виде Событий на календарной сетке или анимированной галереи.
(3) и раскрывающийся многоуровневый список записей.
возьмем пример, есть записи Участники, у них есть такой атрибут как Город (а это ссылка на запись в объекте Города), а у города есть атрибут Район (а это ссылка на запись в объекте Районы), а у района есть атрибут Страна (а это ссылка на запись в объекте Страны).
и на нашей странице мы сначала видим список стран, кликаем на одной из них (и страница перегружается или асинхронно), и открывается подсписок с районами, принадлежащим к этой стране, затем кликаем на районе и видим подспиок городов и затем доходим до участников, живущих в этом городе.
вначале я подумал, что такую страницу правильнее назвать Список атрубутов с соответвующими записями, но пока это писал, я понял, что это не просто атрубуты - это записи в др объектах. Таким образом такая страница - это цепочка списков записей из разных, связанных с собой объектов, так что открывающийся уровень показывает записи по связи от одного-ко многому (те новый уровень - это вроде как список связанных записей на дитейл лейуте).
Т.о. в таком четырех-уровневом списке мы фактически организуем вывод сразу четырех списков разных объектов (но не польных, а фильтрованных). Это интересно.
если у кого-то был опыт создания таких страниц и не сложно дать пример, то дайте, но конечно я позже еще погуглю тему сам
По описанию очень похоже на связанные списки. Просто "многоуровневые списки" это больше про деревья, как написал Gres. Я как-то писал связанные списки. В принципе ничего сложного - можно легко стандартными средствами Visualforce страницы сделать. Хотя способов реализации с помощью JS я думаю много. Я делал просто 4 выпадающих списка, на которых висел обработчик onchange и renreder. При изменении любого из списков на сервер уходили состояния списков и дочерние списки пересчитывались в зависимости от значений парентов. Если данные статичные, то можно вообще сразу все данные на страницы выгрузить и работать уже чистым JS.
Кстати да. Помню один раз маялся с составлением дерева на стороне Visualforce страницы, а потом оказалось что собрать готовый html прямо в контролере (в рекурсивном методе) и просто вывести на страницы одим тегом вообще простая задача.
Из начально как раз было 4 селекта с ренлерингом на серверной стороне, но как же это все долго работает. Вообще, в последнее время стараюсь все писать на js + использую веб сервисы для работы с данными. На мой взгял это очень удобный подход.