Как отфильтровать опции в SuggestBox производителя приложений - PullRequest
0 голосов
/ 25 апреля 2019

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

  1. Использование модели вместо Options / Value;Создайте вычисляемую модель SQL и передайте параметр для фильтрации:

Не сработало: у предложитьBox нет события или чего-либо, что можно вызвать до загрузки данных, поэтому, если вы передаете параметр для запроса, прежде чем что-либо вводитьв - не видно и вы получаете сообщение об ошибке:

Please provide value for the parameter ":Param" used in the query Error: Please provide value for the parameter ":Param" used in the query
Query for record suggest oracle: (Error) : Please provide value for the parameter ":Param" used in the query
Query for record suggest oracle failed.

Использование параметров / значений

Кажется, что невозможно передать различные свойства объекта при передаче его в ящик для предложений.Например, я хочу, чтобы пользователь увидел удобное для пользователя поле Имя и работал с записью или хотя бы идентификатором записи, но если вы укажете Имя в качестве опции и Идентификатор в качестве значения, Имя записывается в SuggestBox, и теперь мы получаем ошибку проверки, потому что Имя - это строка, а Id - это Число.

Пожалуйста, помогите мне понять, где я не прав, или покажите мне обходной путь для этого.Спасибо!

1 Ответ

1 голос
/ 31 мая 2019

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

что-то вроде:

YourFilterColumn startsWith? :Param

Добавьте табличное представление, а затем вы можете добавить текстовое поле и установить для события oninputchange значение:

widget.datasource.query.parameters.Param = widget.value;
widget.datasource.load();

Затем вы можете начать печатать, выбрать нужную запись и передать ее обратно в форму с помощью кнопки.

вот так, если это реляционное поле:

app.pages.YourPage.children.YourForm.datasource.item.YourItem = 
widget.datasource.item;

или что-то в этом роде, если вам просто нужно значение (еще не проверяли):

app.pages.YourPage.children.YourForm.datasource.item.YourItem = 
widget.datasource.item.YourValue;

Возможно, добавьте пару строк, чтобы очистить форму:

widget.root.descendants.TextBox1.value = "";
widget.datasource.query.parameters.Param = "";
widget.datasource.load();
...