<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
        <title>prg - Dynamic Action (DA)</title>
        <link>http://prg.mozellosite.com/tehnologii/apex/dynamic-action-da/</link>
        <description>prg - Dynamic Action (DA)</description>
                    <item>
                <title>Вызов DA (dynamic action) из JavaScript</title>
                <link>http://prg.mozellosite.com/tehnologii/apex/dynamic-action-da/params/post/651051/vyzov-da-dynamic-action-iz-javascript</link>
                <pubDate>Wed, 02 Dec 2015 13:20:00 +0000</pubDate>
                <description>&lt;div class=&quot;moze-justify&quot;&gt;Одной из проблем, с которыми встречаются разработчики Апекс являются затруднения
  при попытке вызова созданного dinamyc action из пользовательской js-функции.
  И это не странно, так как такой вызов происходит через инициализацию события
  элемента, что совсем не очевидно.
  &lt;br&gt;
  &lt;br&gt;В этом материале мы приведем пошаговый пример и покажем как же все-таки вызвать
  динамик экшн из пользовательской функции на клиенте.
  &lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;hr class=&quot;moze-more-divider&quot;&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;moze-justify&quot;&gt;Показать это мы можем на примере клика по встроенному в апекс дереву, при нажатии
  на ветку которого должно происходить изменение скрытого элемента, его обновление
  в сессии и запуск DA.
  &lt;br&gt;
&lt;/div&gt;
&lt;br&gt;&lt;div class=&quot;moze-justify&quot;&gt;Но перед тем, как начать, сделаем небольшое отступление. Так как мы будем использовать функцию &lt;a target=&quot;_blank&quot; href=&quot;http://prg.mozello.ru/jazyki/javascript/params/post/651066/funkcija-getelementbyid&quot;&gt;Document.getElementById()&lt;/a&gt;, чтобы нам не писать эту конструкцию каждый раз, давайте зажмем ее в промежуточную функцию ById(), которая будет нам возвращать объект из &lt;a target=&quot;_blank&quot; href=&quot;http://prg.mozello.ru/jazyki/html/params/post/651571/dom-document-object-model&quot;&gt;DOM&lt;/a&gt;. Вид у нее будет достаточно простой.&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;span class=&quot;moze-code&quot;&gt;function byId(thid)&lt;br&gt;{&lt;br&gt;&amp;nbsp; return document.getElementById(thid);&lt;br&gt;}&lt;br&gt;&lt;/span&gt;Теперь можно приступать к формированию обработчиков на странице Вашего apex - прило&lt;br&gt;&lt;br&gt;&lt;b&gt;1. Обработка нажатия&lt;/b&gt;
&lt;br&gt;&lt;br&gt;&lt;div class=&quot;moze-justify&quot;&gt;При работе с dynamic action нам потребуется функция, которая будет помещать необходимое значение в скрытый элемент и инициализировать событие изменения этого элемента (так как DA среагирует только на изменение внесенное им самим, а изменение значение элемента обычным JS будет проигнорировано).&lt;br&gt;&lt;/div&gt;&lt;br&gt;То есть, на ветку дерева, на событие onClick, помещаем вызов нашей пользовательской функции и передаем ей значение выбранной ветки. Например:&lt;br&gt;&lt;span class=&quot;moze-code&quot;&gt;javascript:void(start_fun(&#039;||sql_val||&#039;)&lt;/span&gt;Сам вид js - функции start_fun() будет иметь вид&lt;br&gt;&lt;br&gt;&lt;span class=&quot;moze-code&quot;&gt;function start_fun(v)&lt;br&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp; byId(&#039;p_hidden_element&#039;).value=v;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp; apex.event.trigger(&#039;#p_hidden_element&#039;,&#039;change&#039;,&#039;&#039;);&lt;br&gt;}&lt;/span&gt;Что происходит в этой функции. В ней всего две строки. Первой строкой мы помещаем значение в элемент с id - p_hidden_element (здесь нужно указать ИД своего элемента). А следующей, второй строкой мы инициируем событие изменения этого значения. &lt;br&gt;&lt;br&gt;&lt;b&gt;2. Настройка DA (dynamic action)&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;moze-justify&quot;&gt;Дальнейшие действия также не сложны. Надо настроить DA. Для этого теперь достаточно создать DA, который будет реагировать на событие change элемента p_hidden_element.&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
            </item>
            </channel>
</rss>