Работа с элементами управления

Следующая информация относится только к элементам управления, которые работают с моделями объектов.

Элементы управления являются частью разметки. Ссылка на коллекцию элементов управления разметки содержится в её поле controls:

let layoutControls = someLayout.controls; (1)
1 someLayout — разметка.
Доступ к элементу управления осуществляется по названию, которое ему присвоено в программе Конструктор Web-разметок:
let registrar = layoutManager.cardLayout.controls.get<Employee>("registrar"); (1)
1 Получаем элемент управления Сотрудник (Employee) с названием "registrar" из разметки карточки (layoutManager.cardLayout).
Доступ к свойствам и значению элемента управления осуществляется через его поле params:
let registrarName = registrar.params.value.displayName; (1)

registrar.params.visibility = false; (2)
1 Получаем значение элемента управления registrar (params.value), из которого получаем отображаемое имя сотрудника (displayName).
2 Изменяем значения свойства Видимость на "false" (элемент управления будет скрыт).

Изменение значения элемента управления осуществляется через свойство params.value.

Способ изменения зависит от типа значения:

Для простых типов (string, bool, int и пр.) значение изменяется напрямую:
 let onControl = layoutManager.cardLayout.controls.get<CheckBox>("onControl"); (1)

 onControl.params.value = true; (2)
1 Получаем из разметки карточки элемент управления Флаг (CheckBox) с названием "onControl".
2 Изменяем значения элемента управления на true (флаг будет установлен).
Для элемента управления Дата/время значение должно быть предварительно сформировано:
 let endDate = layoutManager.cardLayout.controls.get<DateTimePicker>("endDate"); (1)

 endDate.value = new Date("2019-03-01T12:00:00"); (2)
1 Получаем из разметки карточки элемент управления Дата/время (DateTimePicker) с названием "endDate".
2 Изменяем значения элемента управления на дату 01.03.2019 и время 12:00:00.
Для элементов управления, работающих с моделями объектов, значение должно быть предварительно сформировано:
export async function someHandler(sender: CustomButton, e: IEventArgs) { (1)

    let departmentControllerService = sender.layout.getService($DepartmentController); (2)

    let departmentModel = await departmentControllerService.getStaffDepartment("67E331F0-EF31-4E2C-A1F6-D527606EC8CA"); (3)

    let department = sender.layout.controls.get<Department>("department"); (4)

    department.params.value = await departmentModel; (5)
}
1 Функция является асинхронной.
2 Получаем сервис, загружающий модель объекта для элемента управления Подразделение и Подразделение контрагента.
3 Получаем модель объекта для подразделения с идентификатором "67E331F0-EF31-4E2C-A1F6-D527606EC8CA".
4 Получаем из разметки карточки элемент управления Подразделение (Department) с названием "department".
5 Сохраняем в значение элемента управления полученную ранее модель. В элементе управления будет выбрано подразделение с идентификатором "67E331F0-EF31-4E2C-A1F6-D527606EC8CA".
Список сервисов генерации моделей объектов приведён в пункте Сервисы генерации моделей объектов.
Управление блокировкой элемента управления от изменений осуществляется с помощью параметра disabled:
let control = layoutManager.cardLayout.controls.superControl; (1)

control.params.disabled = true (2)
1 Получение элемента управления superControl.
2 Блокировка элемента управления.

Параметр disabled работает совместно с параметром editOperation:

  • если disabled равен false и editOperation разрешён — редактирование ЭУ разрешено;

  • иначе — редактирование ЭУ запрещено.

Для отрисовки заблокированного элемента управления вызывается метод BaseControlImpl.renderDisabledControl, который может быть переопределён, если требуется собственная реализация отрисовки заблокированного элемента управления.