Учебник по Showcase: Webtext на примере кнопки Добавить

Материал из Course Orchestra
Перейти к: навигация, поиск

Внимание! Изложенная здесь информация устарела! В качестве учебника следует использовать https://share.curs.ru/webhelp/ (work in progress).


Другим важнейшим типом элемента является webtext. Они служит для произвольного отображения данных на экране в html виде. Чаще всего используется для прорисовки кнопок.

В простейшем случае он прописывается на информационной панели следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<datapanel>
   <tab id="1" name="Сотрудники и оргструктура">		
      <element id="20" type="webtext" proc="orgButtons"/>		
   </tab>	
</datapanel>

Процедура, отвечающая за прорисовку webtext, возвращает два параметра типа xml:

  • @webtextdata - html-код, отрисовывающий элемент на панели;
  • @webtextsettings - перечень свойств, которыми обладают отрисованные элементы.

Примерный код процедуры может выглядеть следующим образом:

ALTER PROCEDURE [dbo].[orgButtons]
   @main_context varchar(MAX) ='',
   @add_context varchar(MAX) ='',
   @filterinfo xml='',
   @session_context xml ='',
   @element_id varchar(MAX) ='',    
   @webtextdata xml output,
   @webtextsettings xml output
AS
BEGIN
   SET NOCOUNT ON;

   DECLARE 
      @addButton as varchar(max)

   SET @addButton = '
      <td>				
         <button onclick="gwtWebTextFunc('''+@element_id+''',''1'');">
            <span>Добавить</span>
         </button>
      </td>'

   SET @webtextdata = '
      <table>
         <tr>'+@addButton+'</tr>
      </table>'

   SET @webtextsettings = '
      <properties>		
         <event name="single_click" linkId="1">
            <action show_in="MODAL_WINDOW">
               <main_context>current</main_context>
               <modalwindow caption="Заголовок окна" height="800" width="720"/>
               <datapanel type="current" tab="current">
                  <element id="20"/>                                    
               </datapanel>
            </action>
         </event>  				
      </properties>'

END

Здесь идет прорисовка кнопки "Добавить". При щелчке на нее запускается функция gwtWebTextFunc, с помощью которой запускается действие. Функция имеет два параметра: id элемента и linkId. Первый параметр указывает у какого элемента мы рассматриваем linkId (в нашем случае это элемент с id равном @elementId, т.е текущий элемент) и какой номер linkId мы обрабатываем (у нас linkId=1). Далее по linkId мы понимаем, какое действие необходимо запустить. Само же описание linkId, а также описание соответствующих событий и действий, указано в параметре @webtextsettings. В нашем случае, при нажатии на кнопку "Показать новое окно", запускается linkId=1 (<event name="single_click" linkId="1">), которое в отдельном окне (<action show_in="MODAL_WINDOW">), имеющем определенный размер и название (<modalwindow caption="Добавление подразделения" height="800" width="720"/>), прорисовывает элемент с id=30. Т.е. в новом окне мы увидим тот же элемент с кнопкой. Следует отметить, что чаще всего в отдельном окне появляются элементы типа xforms (они же - формы для заполнения). О них будет рассказано позднее.

Самостоятельная работа

  • 1. Добавить на панель простейший грид.
  • 2. Добавить в webtext еще одну кнопку, которая будет отвечать за linkId=2 и которая будет в новом окне открывать добавленный грид