Динамически привязывать источник данных к всплывающему окну - PullRequest
0 голосов
/ 02 ноября 2018

Мне нужно иметь общее всплывающее окно «Подтверждение удаления» и динамически привязывать источник данных к всплывающему окну, используя событие, инициируемое до появления всплывающего окна.

Всплывающее окно появится при нажатии на значок удаления на странице «Местоположение» (скриншот ниже). Мне нужно установить источник данных всплывающего окна одновременно. (когда пользователь нажимает на этот значок удаления), и запись должна быть удалена, когда пользователь нажимает кнопку «Удалить» во всплывающем окне.

enter image description here

Это код, который у меня есть в настоящее время для события onclick значка удаления выше

app.popups.ItemDeleteConfirmationDialog.descendants.Content.datasource = widget.datasource;
app.popups.ItemDeleteConfirmationDialog.descendants.ConfirmButton.datasource = widget.datasource;
app.popups.ItemDeleteConfirmationDialog.visible=true;

И это то, что у меня есть для кнопки onClick всплывающего окна

widget.datasource.deleteItem();

Пожалуйста, помогите мне решить эту проблему. Спасибо.

1 Ответ

0 голосов
/ 02 ноября 2018

Кто-то из команды App Maker из Google предложил следующее:

В всплывающем окне подтверждения установите настраиваемое свойство типа Dynamic. Для целей этого примера вызовите свойство CallbackFn.

Для события onClick вашего ConfirmButton во всплывающем окне установите следующий клиентский скрипт:

if (typeof widget.root.properties.CallbackFn === 'function') {
  widget.root.properties.CallbackFn();
}
widget.root.visible = false;

Для кнопки удаления в таблице источников данных установите следующий клиентский скрипт:

deleteItem(widget.datasource);

В разделе сценариев добавьте клиентский сценарий или вставьте следующую функцию в существующий клиентский сценарий:

function deleteItem(datasource) {
  var popup = app.popups.ItemDeleteConfirmationDialog;

  popup.properties.CallbackFn = function() {
    datasource.deleteItem();
  };

  popup.visible = true;
}

Поскольку ваша кнопка удаления в вашей таблице находится в строке таблицы, вам может потребоваться изменить переменную функции, передаваемую в функцию deleteItem (), следующим образом:

deleteItem(widget.parent.parent.datasource);

Если это не сработает, дайте мне знать. У меня это настроено в моем собственном приложении с гораздо более сложной логикой, и в некоторых случаях я передаю несколько переменных моей функции deleteItem (), и она прекрасно работает.

...