Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


О Notes

Главная   Библиотека   О Notes

Пример отображения данных на web-странице. Часть 1

Долгоаршинных Нурислям Нуруллович
Санкт-Петербург

Данный материал не содержит ничего принципиально нового и неизвестного, а просто является небольшим примером, который может оказаться кому-нибудь полезным.
Общеизвестно, что Lotus Domino может формировать HTML код страницы налету, подставляя значения полей документа, НТМL-вставки из формы документa, заданные ресурсы, а также специализированные встроенные элементы, например Embedded View.
В процессе генерации HTML-кода налету сервер Lotus Domino заполняет, в том числе и поля, заданные как вычисляемые при отображении, определенными значениями. В качестве таких значений могут выступать простые константы (числовые, текстовые и проч.), значения других полей, их комбинации, а также @-функции.
Для начала рассмотрим маленький пример.
На форме разместим текстовое поле Data4View типа: «Computed for display», которое в примерах будет предоставлять данные для формирования отображения в зависимости от присваиваемого значения.


Для первого простейшего примера присвоим полю значение:
"[<h1>"+Form+"</h1>]";
Напоминание: квадратные скобки предписывают серверу интерпретировать текст внутри них как HTML-текст.

На стороне клиента в браузере получим:

Все просто и общеизвестно.
Рассмотрим более сложные примеры.
В качестве источника данных используем БД с фрагментом Классификатора адресов России (КЛАДР), которую дополним представлением data4View, первая колонка, которого категоризирована по некоторому значению, а последующие содержат формулы, генерирующие HTML коды со встроенными значениями полей. Для отбора данных из представления можно воспользоваться командами @DbLookup или @DbColumn. При этом нельзя забывать ограничение, что @DbLookup и @DbColumn «can return no more than 64KB of data».

Формирование маркированного списка.

Полю “Data4View” присвоим значение:
Host :="";
Base:="";
View :="data4View";
Column := 2;
Key:="К";
List:=@DbLookup( "":"NoCache"; Host:Base ; View; Key; Column);
@If(@IsError(List); "No documents found";@Subset(List;5))
Здесь и далее для примеров из представления «data4View» отбираются документы по заданному ключу (города на букву «К»). В конкретном приложении значение ключа задается, например, по значению некоторого поля документа или иной логики приложения. Кроме того, дополнительно, командой @Subset отбирается определенное количество строк из списка.
Источником данных выступает колонка 2 содержащая следующую формулу:

"[<li> "+ Name+"</li>]"

На форме сформируем следующий HTML-фрагмент с полем:

<h2>1. Маркированный список</h2>
<ul> </ul>

Результат в браузере:

Формирование маркированного списка ссылок.

Несколько усложнив формулу колонки источника данных

"[<li> <a href="+@Text(@DocumentUniqueID)+"?OpenDocument> "+ Name+"</a></li>]"

Получаем результат:

Формирование перечня флажков

Аналогичным образом можно получить перечень флажков (checkbox) или переключателей (radio) и проч.:

"[<input type=\"checkbox\" >]"+Name

Формирование таблицы


Еще более усложним формулу колонки источника данных

"[<tr valign=\"top\"><td><a href="+@Text(@DocumentUniqueID)+"?OpenDocument> "+ NAME+"</a></td>" + "<td><b>" + SOCR + "</b></td> <td align=\"center\">"+ INDEX+"</td> <td align=\"center\"><b>" + GNINMB + "</b></td>
<td align=\"center\"><b>" + OKATD + "</b></td></tr>]"

А на форме вручную напишем HTML-текст по формированию собственно самой таблицы и ее заголовка. Здесь же для наглядности примера опишем CSS для форматирования таблицы. Информационные строки таблица будут подставлены как содержимое поля Data4View, заполненные из колонки представления по вышеприведенной формуле.

<h2>4.Таблица</h2>
<style type="text/css">
table {
border: 4px double black ;
}
th {
background-color:silver;
font: bold 12pt/10pt sans-serif;
align:"center";
}
</style>
<table cellpadding="2" cellspacing="0">
<tr>
<th nowrap >Название</th> <th nowrap > Тип</th>
<th nowrap >Индекс</th> <th nowrap > Код ИФНС</th>
<th nowrap >ОКАТО</th>
</tr>

</table>

В результате в браузере получим:

Причем на странице можно сформировать более одной таблицы, что принципиально не возможно при использовании Embedded View. Манипулируя отбором данных можно реализовать навигацию по набору данных большего, чем в примере, размеру.

Заключение

В следующей статье будут приведены примеры более сложной визуализации данных с расширенной функциональностью.

Разработка web-приложений. >>>
Разработка web-приложений. Двухдолларовый словарик >>>
Вставка фрагмента HTML-кода >>>
 
  Опубликовано — 05/25/2009 |    

DNN (Автор), 27.05.2009 09:02:34:
Я на слова не необижаюсь, тем более что вы правы. Действительно мои опусы собержат много "колхозной" разрухи, неоптимальности, избыточности и т.п. Но чтобы это стало неким полезным КОЛХОЗОМ в смысле некой полезной, коллективной БИБЛИОТЕКИ и нужно писать и опусы, и замечания и проч. Очень надеюсь, что еще кто-нибудь подключится в наш колхозик.

Александр Еремин, 27.05.2009 08:14:46:
да не за что. :о)
ну а "колхоз", я не стремился никого обидеть, но если задело за живое, извините :) этим лишь я хотел сказать, что если так делать то это не красивое решение или результат тоже не очень :)

DNN (Автор), 27.05.2009 07:47:46:
Уважаемый Александр Еремин! Т.к. Вы не в первый раз употребляете слово "колхоз", я не поленился и слазил в Википедию и узнал, что колхоз это не только форма коллективного хоз-ва, но и крупнейшая электронная библиотека естественнонаучной литературы. Так что Вам очередное СПАСИБО!

DNN (Автор), 27.05.2009 07:39:54:
Опять полностью с Вами согласен. Стремясь показать некую идею, иногда пропускаешь тонкости реализации. Тем более, что я не программист, а скорее постановщик задач. Но мир, в том числе и мир Lotes Notes, не без добрых людей. Поправят, подскажут, научат.
СПАСИБО! Очень расчитываю на Ваши полезные замечания и в дальнейшем.

Александр Еремин, 27.05.2009 04:43:54:
1. @DbLookup поддерживает дополнительные атрибуты, начиная с версии 6, один из них: [FAILSILENT] returns "" (null string) instead of an error if the key cannot be found. Благодаря чему, уже отпадает необходимость в проверке с @IsError. А разработка под wеb в версии ниже чем 6, давно морально устарела.
2. Усложнять формулу/формулы колонки это колхоз, т.к. индексатору требуется большее время проиндексировать вьюшку, да и @DbLookup начинает ворачивать меньше данных, ЗНАЧИТЕЛЬНО! меньше, благодаря своему ограничению. Советую делать так: ту колонку которую хотите получить, в ней всеголишь указываете UNID документа, а уже в Computed Text по @getdocfield получаете нужные поля по всем унидам и формируете свой HTML. Скорость будет однозначно выше и решение изящней :о)
3. ?OpenDocument его свободно можно не использовать, т.к. запись вида "0/FB944D55911AFF0AC8257555000FDC45" и так откроет документ на чтение, а у пользователей меньше будет желания экспериментировать. :)



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU