4.3.5. Использование независимых полей вместо FieldGroup
Использование компонента FieldGroup в редакторе сущности не является обязательным. Мы можете легко заменить FieldGroup
на отдельные поля, чтобы кастомизировать стандартную разметку экрана.
Ниже приведён пример такого экрана для редактирования сущности Order.
XML-дескриптор экрана order-edit.xml содержит основной источник данных orderDs
и вложенный в него orderLinesDs
для строк заказа, а также независимый источник данных customersDs
, чтобы загружать список покупателей для выбора из выпадающего списка lookupField
:
<dsContext>
<datasource id="orderDs"
class="com.company.sample.entity.Order"
view="order-edit">
<collectionDatasource id="orderLinesDs"
property="orderLines"/>
</datasource>
<collectionDatasource id="customersDs"
class="com.company.sample.entity.Customer"
view="_minimal">
<query>
<![CDATA[select e from sample$Customer e]]>
</query>
</collectionDatasource>
</dsContext>
Теперь достаточно создать поля для всех атрибутов сущности Order
, указать для каждого поля соответствующий источник данных и нужный атрибут сущности, используя XML-атрибут property:
-
поле номера заказа:
<textField id="numField" caption="msg://order.num" datasource="orderDs" property="num"/>
-
поле выбора покупателя:
<lookupField id="customerField" caption="msg://order.customer" datasource="orderDs" property="customer" optionsDatasource="customersDs"/>
-
выбор даты заказа:
<datePicker id="datePicker" caption="msg://order.date" datasource="orderDs" property="date"/>
-
таблица строк заказа:
<table id="orderLinesTable" height="300px" width="100%"> <rows datasource="orderLinesDs"/> . . . </table>
Такой подход к созданию экранов предоставляет большую гибкость в использовании визуальных компонентов и их расположении на экране.