Здравствуйте!
Пользователю требуется вводить данные напрямую на экране brows.xml минуя стандартное решение jimix через экран edit.xml.
Для этого нашли пример кода вот здесь https://demo.jmix.io/sampler/#main/0/sample?id=datagrid-editor-actions
В принципе все подходит кроме одного - при добавлении строки в таком стандартном решении необходимо подтверждать ввод данных через кнопку “ОК”. И если строка не заполнена, то при создании новой строки выдается сообщение “Close the editor before creating a new entity”/
Пользователю нужно вводить данные без такого подтверждения через кнопку “ОК”. Нужно, чтобы данные “автосохранялись” . Но код этих кнопок и сообщений где то под капотом как я понимаю. Не очень понятно в какой метод “зашита” кнопка “ОК”
Есть ли пример кода где бы пользователи могли бы сохранять данные сразу после их ввода?
Вот код xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<dataGrid id="buildingsDc1" width="100%" editorEnabled="true" dataContainer="buildingsesDc">
<actions>
<action id="create" type="create"/>
<action id="edit" type="edit"/>
</actions>
<columns>
<column id="building_1" property="building_1"/>
<column id="building_2" property="building_2"/>
</columns>
<buttonsPanel id="buttonsPanel" alwaysVisible="true">
<button id="createBtn" action="buildingsDc1.create"/>
</buttonsPanel>
</dataGrid>
<hbox id="lookupActions" spacing="true" visible="false">
<button action="lookupSelectAction"/>
<button action="lookupCancelAction"/>
</hbox>
</layout>
Вот код в соответствующем интерфейсе Browse.java
package com.company.test_125.screen.buildings;
import com.vaadin.annotations.Viewport;
import com.vaadin.spring.annotation.ViewScope;
import io.jmix.core.Metadata;
import io.jmix.ui.Notifications;
import io.jmix.ui.UiComponents;
import io.jmix.ui.action.Action;
import io.jmix.ui.component.DataGrid;
import io.jmix.ui.model.CollectionContainer;
import io.jmix.ui.screen.*;
import com.company.test_125.entity.Buildings;
import jdk.jfr.MetadataDefinition;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
@UiController(“Buildings.browse”)
@UiDescriptor(“buildings-browse.xml”)
//@LookupComponent(“buildingsesTable”)
public class BuildingsBrowse extends StandardLookup {
@Autowired
protected DataGrid<Buildings> buildingsDc1;
@Autowired
protected CollectionContainer<Buildings> buildingsesDc;
@Autowired
protected Notifications notifications;
@Autowired
protected Metadata metadata;
@Subscribe("buildingsDc1.create")
public void onEditActionsCreate(Action.ActionPerformedEvent event) {
if (buildingsDc1.isEditorActive()) {
notifications.create()
.withCaption("Close the editor before creating a new entity")
.show();
} else {
Buildings newCustomer = metadata.create(Buildings.class);
buildingsesDc.getMutableItems().add(newCustomer);
buildingsDc1.edit(newCustomer);
}
}
@Subscribe("buildingsDc1.edit")
public void onEditActionsEdit(Action.ActionPerformedEvent event) {
Buildings selected = buildingsDc1.getSingleSelected();
if (selected != null) {
buildingsDc1.edit(selected);
} else {
notifications.create()
.withCaption("Item is not selected")
.show();
}}
}