Добрый день
Стояла следующая задача: Отобразить на форм апплете Обращений n последних заметок, урезав их до фамилии автора, даты создания и первых 50-ти символов текста. При нажатии на «короткую» заметку, в том же поле вывести полный текст заметки. При повторном нажатии – полный текст скрыть.
Вариант реализации:
1. Пишем Browser Script, который по входящему Row_ID Обращения определяет n последних заметок и заворачивает их в общий html код примерно такого формата:
<div style = 'width:350px; height:140px; border: solid 1px Gray;'> <!-- Тут задаем общий размер элемента и внешний вид--> <div id = 'noteMain'> <!-- Общий контейнер для коротких заметок--> <div onclick='mHide(1)'>Текст 1 заметки</div> <div onclick='mHide(2)'>Текст 2 заметки</div> ... <div onclick='mHide(n)'>Текст n заметки</div> </div> <div id='n1' onclick='mHide(1)' style='display: none;'>Полный текст заметки 1</div> <div id='n1' onclick='mHide(2)' style='display: none;'>Полный текст заметки 2</div> ... <div id='nn' onclick='mHide(n)' style='display: none;'>Полный текст заметки n</div> </div>
Полный текст заметок не отображается на экране до вызова функции mHide(при нажатии на заметку), которая переключает режим отображения
2. Добавляем функцию mHide в файл с темплейтом апплета (либо как-то иначе встраиваем в html структуру документа). Код функции:
function mHide(id) { if (document.getElementById("n"+id).style.display=='none') { document.getElementById("n"+id).style.display='inline-block'; document.getElementById("noteMain").style.display='none'; } else { document.getElementById("n"+id).style.display='none'; document.getElementById("noteMain").style.display='inline-block'; } }
3. Создаём на БК новое калькулируемое поле, которе будет получать результаты работы БС из пункта 1. 4. Добавляем на апплет новый контрол, указав в параметре «HTML Display Mode» значение DontEncodeData.
Результаты получились такими:
Отображение 4 коротких заявок:
Отображение раскрытой полной заявки после нажатия на короткую:
— Ярославцев Андрей 2014/12/09 11:08