Добрый день. В процессе изучение jmix возник следующий вопрос. Планирую реализовать кастомное выделение элементов в таблице через checkBox в каждой ячейке и один checkBox “Выделить все” в заголовке. Предполагаю, что нужно расширить JPA сущность привязанную к таблице, добавив туда св-во selected, но верно ли туда добавлять св-во, которое нужно только для выделения в конкретной таблице? И где правильно хранить св-во selected для checkBox “Выделить все”? И в целом, как правильно хранить состояние всех компонентов экрана?
Добрый день!
Предлагаю тут посмотреть
1 симпатия
Спасибо, частично помогло, а как верно задавать единичные свойства? В примере имеется коллекция и к ней добавили св-во selected. А мне допустим нужно св-во для единственного чекбокса или допустим св-во для цвета кнопки или css стиля. Как пример JavaScript объект к которому я бы мог привязать что угодно.
Вовсе не обязательно хранить состояние экрана в сущностях. Можно просто в полях самого экрана:
<groupTable id="departmentsTable"
width="100%"
dataContainer="departmentsDc">
<columns>
<column id="selected" caption="Selected"/> <!-- generated column -->
<column id="name"/>
<column id="hrManager"/>
</columns>
...
@Autowired
private UiComponents uiComponents;
private Map<Department, Boolean> selected = new HashMap<>();
@Install(to = "departmentsTable.selected", subject = "columnGenerator")
private Component departmentsTableSelectedColumnGenerator(Department department) {
CheckBox checkBox = uiComponents.create(CheckBox.class);
checkBox.setValue(selected.containsKey(department));
checkBox.addValueChangeListener(booleanValueChangeEvent -> {
Boolean value = booleanValueChangeEvent.getValue();
if (Boolean.TRUE.equals(value)) {
selected.put(department, true);
} else {
selected.remove(department);
}
});
return checkBox;
}
Добавляйте компоненты на экран, и в их обработчиках ValueChangeEvent сохраняйте значения в полях экрана. Если вам не нужно сохранять эти значения, то привязка к сущностям модели данных не нужна.
2 симпатии