При помощи каких компонент вы посоветуете расположить компоненты на экране
компоненты:
фильтр, 2 таблицы
все компоненты должны располагаться друг под другом без пространства
Таблицы должны занимать поровну по высоте пространство незанятое фильтром.
Данный вариант был опробован, вот результат:
код:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/5.0/window.xsd"
caption="msg://browseCaption"
class="com.magenta.ladaimage.gui.uploadpart.UploadPartBrowse"
lookupComponent="uploadPartTable"
messagesPack="com.magenta.ladaimage.gui.uploadpart">
<dsContext>
<collectionDatasource id="uploadPartDs"
class="com.magenta.ladaimage.entity.UploadPart"
view="_local">
<query>
select e from ladaimage$UploadPart e
</query>
</collectionDatasource>
<collectionDatasource id="newDs"
class="com.magenta.ladaimage.entity.Item"
view="_local">
<query>
select e from ladaimage$Item e
</query>
</collectionDatasource>
</dsContext>
<layout spacing="true">
<vbox>
<filter id="filter"
datasource="uploadPartDs">
<properties include=".*"/>
</filter>
<vbox height="100%">
<table id="uploadPartTable"
height="100%"
width="100%">
<columns>
<column id="lot"/>
<column id="dealer"/>
<column id="isUnited"/>
<column id="uploadCenter"/>
</columns>
<rows datasource="uploadPartDs"/>
<rowsCount/>
</table>
<table height="100%"
width="100%">
<columns>
<column id="name"/>
</columns>
<rows datasource="newDs"/>
</table>
</vbox>
</vbox>
</layout>
</window>
Если же жестко задать высоту то результат такой:
Код:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/5.0/window.xsd"
caption="msg://browseCaption"
class="com.magenta.ladaimage.gui.uploadpart.UploadPartBrowse"
lookupComponent="uploadPartTable"
messagesPack="com.magenta.ladaimage.gui.uploadpart">
<dsContext>
<collectionDatasource id="uploadPartDs"
class="com.magenta.ladaimage.entity.UploadPart"
view="_local">
<query>
select e from ladaimage$UploadPart e
</query>
</collectionDatasource>
<collectionDatasource id="newDs"
class="com.magenta.ladaimage.entity.Item"
view="_local">
<query>
select e from ladaimage$Item e
</query>
</collectionDatasource>
</dsContext>
<layout spacing="true">
<vbox>
<filter id="filter"
datasource="uploadPartDs">
<properties include=".*"/>
</filter>
<vbox height="100%">
<table id="uploadPartTable"
height="300px"
width="100%">
<columns>
<column id="lot"/>
<column id="dealer"/>
<column id="isUnited"/>
<column id="uploadCenter"/>
</columns>
<rows datasource="uploadPartDs"/>
<rowsCount/>
</table>
<table height="300px"
width="100%">
<columns>
<column id="name"/>
</columns>
<rows datasource="newDs"/>
</table>
</vbox>
</vbox>
</layout>
</window>
Но этот результат неудовлетворителен так как нужно чтобы таблицы занимали все возможное пространство
Спасибо expand помог
Вы упустили expand=“usersTableBox” для layout. VBox, который лежит в layout, не требуется, layout по умолчанию - вертикальный контейнер.
Ключевой момент - задать высоту для таблиц равную 100%, таблицы поместить в вертикальный контейнер. Тогда контейнер выделит для компонентов поровну места. Сам контейнер должен иметь 100% высоту, для этого можно использовать expand.
Пример:
<layout expand="usersTableBox" spacing="true">
<filter id="genericFilter" datasource="usersDs"
margin="false,false,true,false">
<properties include=".*"/>
</filter>
<vbox id="usersTableBox" spacing="true">
<table id="usersTable" height="100%" width="100%">
<columns>
<column id="login"/>
<column id="name"/>
</columns>
<rows datasource="usersDs"/>
</table>
<table id="usersTable2" height="100%" width="100%">
<columns>
<column id="login"/>
<column id="name"/>
</columns>
<rows datasource="usersDs"/>
</table>
</vbox>
</layout>