Форма ввода Appmaker, изменение параметров на основе предыдущих выпадающих вариантов - PullRequest
0 голосов
/ 27 июня 2019

Гипотетический:

Скажем, у меня есть кто-то, кто заказывает торт, и они выбирают ваниль или шоколад, а затем им нужно выбрать глазурь

if vanilla: strawberry or buttercream   

if chocolate: mocha, dark chocolate or buttercream.

В настоящее время значение замерзания в модели данных может принимать все четыре параметра, поэтому все четыре отображаются в раскрывающемся списке.

а) есть ли способ изменить привязку для второго раскрывающегося списка после выбора первого?

Ответы [ 3 ]

2 голосов
/ 27 июня 2019

Это можно сделать без сохранения данных в каком-либо источнике данных. Просто сделайте следующее ...

Предположим, первое раскрывающееся меню называется primaryDropdown , а второе раскрывающееся меню называется primaryDropdown . В параметрах primaryDropdown установите следующее:

["Vanilla", "Chocolate"]

Кроме того, обязательно снимите флажок allowNull и в обработчике события onAttach укажите следующее:

widget.value = "Vanilla";

Теперь мы переходим к вторичного спада . Здесь мы сделаем привязку, поэтому поместите следующее в значение options:

getAvailableOpts(@widget.root.descendants.primaryDropdown.value)

В клиентском скрипте нам нужно убедиться, что функция существует, поэтому, пожалуйста, вставьте в любой клиентский скрипт следующее:

function getAvailableOpts(primaryValue){

  var options;

  switch(primaryValue){
    case "Vanilla":
      options =["Strawberry","Buttercream"];
      break;
    case "Chocolate":
      options = ["Mocha","Dark Chocolate","Buttercream"];
      break;
    default:
      options = [];
  }

  return options;

}

Отсюда ты хороший; Однако мы все еще можем сделать это лучше. Для этого обязательно снимите флажок с опции allowNull для condDropdown , а затем нам нужно добавить некоторую логику в обработчик событий onValueChange primaryDropdown .

widget.root.descendants.secondaryDropdown.value = widget.root.descendants.secondaryDropdown.options[0];

Ссылки:

https://developers.google.com/appmaker/ui/input-widgets#dropdown https://developers.google.com/appmaker/ui/binding#bindings https://developers.google.com/appmaker/scripting/client#use_scripts_in_binding_expressions

1 голос
/ 27 июня 2019

Я предполагаю, что вы установили раскрывающиеся опции "возможное значение" в источнике данных, и у вас есть эти поля как строковые поля в вашей таблице.

быстрый и грязный способ сделать это - перейти на тортв раскрывающемся меню и в Редакторе свойств> События> OnValueChange выберите «Настраиваемое действие» и используйте этот код

if(widget.value==="Vanilla"){
   widget.root.descendants.Field.options = ['Strawberry','Buttercream'];
}else if (widget.value === "Chocolate"){
  widget.root.descendants.Field.options = ['Mocha','Dark Chocolate','Buttercream'];
}

«Поле» здесь заменяется именем выпадающего списка для ваших глазурь

такжеперейдите в редактор свойств выпадающего меню и удалите все в поле параметров.

0 голосов
/ 30 июня 2019

Я пытался найти решение для аналогичной ситуации и создал дополнительную таблицу, которая послужит поиском.

У меня есть раскрывающийся список для CATEGORY с возможными параметрами, установленными в поле основного источника данных.

Тогда у меня есть вторая таблица с 2 столбцами: CATEGORY и SUB_CATEGORY.

В форме ввода у меня есть варианты для раскрывающегося списка SUB_CATEGORY, установленного на SUB_CATEGORY в справочной таблице CATEGORY_MATRIX.

Затем для события onValueEdit в раскрывающемся списке CATEOGRY у меня есть сценарий для перезагрузки источника таблицы CATEGORY_MATRIX на основе значения раскрывающегося в запросе значения CATEGORY, поэтому при выборе только CATEGORY действительные параметры SUB_CATEGORY показаны во втором раскрывающемся списке.

var datasource = app.datasources.CATEGORY_MATRIX 
datasource.query.filters.CATEGORY._equals = newValue;
datasource.load();

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

...