Зависимости
Между виджетами, филдсетами или полями можно установить зависимости. Зависимоcти задаются выражениями на языке JavaScript.
Блокировка
Блокировка позволяет сделать компонент недоступным для редактирования в определенных условиях.
Блокировка полей ввода
Поле можно заблокировать по условию с помощью элемента <enabling>:
<input-text id="maidenName" label="Девичья фамилия">
<dependencies>
<!-- Поле "Девичья фамилия" доступно для редактирования, если пол женский, где
gender - это поле в источнике данных виджета с текущей моделью данных -->
<enabling on="gender">gender == 'woman'</enabling>
</dependencies>
</input-text>
Существует короткая запись условия блокировки поля с помощью атрибута enabled.
Атрибут enabled принимает значение true или false,
но его можно задать через javaScript выражение:
<input-text id="maidenName"
label="Девичья фамилия"
enabled="{gender == 'woman'}"/>
<!-- Поле "Девичья фамилия" доступно для редактирования, если пол женский, где
gender - это поле в источнике данных виджета с текущей моделью данных -->
Блокировка филдсетов
Филдсет можно заблокировать по условию с помощью атрибута enabled:
<set id="woman"
label="Девичья фамилия"
enabled="{gender == 'woman'}">
<!-- Филдсет "Девичья фамилия" доступен для редактирования, если пол женский, где
gender - это поле источника данных виджета с текущей моделью данных -->
...
</set>
В данном примере переменная gender - это ссылка на другое поле в этой же форме.
Блокировка кнопок
Кнопку можно заблокировать с помощью элемента <enabling>:
<button label="Изменить">
<dependencies>
<!-- Кнопка "Изменить" доступна для нажатия,
если status не равен 1, где
status - это поле в источнике данных main с моделью resolve-->
<enabling datasource="main"
model="resolve">status != 1</enabling>
</dependencies>
... <!-- Действие -->
</button>
Существует короткая запись условия блокировки кнопки с помощью атрибута enabled.
Атрибут enabled принимает значение true или false,
но его можно задать через javaScript выражение:
<button label="Изменить"
enabled="{status != 1}">
<!-- Кнопка "Изменить" доступна для нажатия, если статус записи не 1, где
status - это поле в текущем источнике данных с текущей моделью данных -->
... <!-- Действие -->
</button>
Блокирование кнопки по условию в элементе не работает в ячейке, нужно использовать условие в атрибуте.
<column label="Доступно для status!=1">
<toolbar>
<button label="Изменить"
enabled="{status != 1}">
... <!-- Действие -->
</button>
</toolbar>
</column>
Скрытие
Скрытие позволяет сделать компонент невидимым в определенных условиях. Условия видимости записываются аналогично условиям блокировки.