Как создать всплывающее предупреждение при нажатии кнопки «Сохранить» в интерактивной сетке в oracle apex - PullRequest
1 голос
/ 13 марта 2019

Я пытаюсь исправить то, как я могу создать предупреждение / диалоговое окно, нажимая кнопку «Сохранить», используемую в интерактивной сетке.Это диалоговое окно с предупреждением имеет два параметра:

  1. Сохранить, при котором измененные пользовательские данные будут отправлены в базу данных
  2. Отмена, при которой измененные данные не будут отправлены.

В настоящее время мы используем Oracle Apex версии 5.1.4

1 Ответ

4 голосов
/ 14 марта 2019

Я не знаю, как остановить стандартное действие сохранения на кнопке IG, поэтому я предлагаю скрыть его и создать другое.

  1. Скрыть стандартную кнопку сохранения. Поместите gridID в поле Static ID вашей интерактивной сетки, добавьте на страницу следующий встроенный стиль CSS:

    #gridID button[data-action="save"] {
      display: none !important;
    }
    
  2. Создайте регион (который будет вашим модальным диалогом) на странице, задайте свойства: Position - Inline Dialogs, Template - Inline Dialog, Static ID - все, что вы хотите, но уникально для страницы (Я использую mod далее).
  3. Создать кнопки OK и Cancel в этом регионе.
  4. Создать новую кнопку с именем SAVE.
  5. Добавить динамическое действие к кнопке Сохранить. Тип True Action - Execute JavaScript Code, код:

    openModal('mod'); // use here the Static ID of modal dialog
    
  6. Добавить динамическое действие к кнопке «Отмена». Тип True Action - Execute JavaScript Code, код:

    closeModal('mod');
    
  7. Добавить динамическое действие к кнопке ОК. Тип True Action - Submit page, Request / Button Name - OK.
  8. Откройте список процессов, найдите стандартный процесс сохранения для IG, установите там значение When Button Pressed - OK.

UPD Как заменить стандартную кнопку Сохранить новой.

  1. Установить статический идентификатор для кнопки Сохранить (например, savebtn)
  2. Добавьте следующий код js в свойства страницы: Execute when page loads:

    var oldBTN = document.querySelector('#gridID button[data-action="save"]');
    var newBTN = document.querySelector('#savebtn');
    oldBTN.parentNode.insertBefore(newBTN, oldBTN);
    

После этого все должно работать так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...