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>

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