Добрый день!
как для простых сущностей сделать добавление элемента не открывая форму ‘detail’ сущности, а путем добавления строки в списке? спасибо!
Просто создайте новый экземпляр сущности и добавьте в контейнер списочного экрана.
MyItemClass newItem = dataContext.create(MyItemClass.class);
newItem.setStatus("New"); //Можно заполнить умолчательные значения атрибутов
MyItemsBrowseDc.getMutableItems().add(newitem);
Как сделать редактирование в строке (без открытия экрана редактирования) - есть в документации: dataGrid :: Документация Jmix
Добрый день! с добавлением нового экземпляра разобрался, спасибо!
также добавил в DataGrid компонент editorActionsColumn (как в документации). данные менять получается, но все изменения пропадают после обновления/смены фокуса. Я так понимаю, их нужно как-то обновлять из коллекции в БД? Подскажите пожалуйста, как это сделать? Через отслеживание какого-то события (Handler’а)? спасибо!
Без дескриптора и кода контроллера можно только гадать что там у вас не так…
Могу предположить, что данные у вас не сохраняются в БД.
Возможно у вас в дескриптор экрана browser остался в режиме “только чтение”.
При создании экрана browser по умолчанию устанавливается именно этот режим.
<data readOnly="true">
<collection id="usersDc"
class="ru.cs_consult.simpledoc.entity.User">
<fetchPlan extends="_base"/>
<loader id="usersDl">
...
...
Добрый день!
в коде при создании экрана никакого признака не было:
<data>
<collection id="employeePositionsesDc"
class="com.company.kazmetsetka.entity.EmployeePositions">
<fetchPlan extends="_base"/>
<loader id="employeePositionsesDl" readOnly="false">
<query>
<![CDATA[select e from EmployeePositions e]]>
</query>
</loader>
</collection>
</data>
я попробовал указать прямо значение:
<data readOnly="false">
<collection id="employeePositionsesDc"
class="com.company.kazmetsetka.entity.EmployeePositions">
<fetchPlan extends="_base"/>
<loader id="employeePositionsesDl" readOnly="false">
<query>
<![CDATA[select e from EmployeePositions e]]>
</query>
</loader>
</collection>
</data>
но это ничего не изменило, внесенные изменения не сохраняются.
до этого еще при добавлении компонента editorActionsColumn выходила ошибка на признак редактируемости колонок
<
column property=“name” editable=“true”
/>
после изменения
<loader id="employeePositionsesDl" readOnly="false">
<query>
<![CDATA[select e from EmployeePositions e]]>
</query>
</loader>
ошибка исчезла, но изменения данных все равно не сохраняется.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<view xmlns="http://jmix.io/schema/flowui/view"
xmlns:c="http://jmix.io/schema/flowui/jpql-condition"
title="msg://employeePositionsListView.title"
focusComponent="employeePositionsesDataGrid">
<data readOnly="false">
<collection id="employeePositionsesDc"
class="com.company.kazmetsetka.entity.EmployeePositions">
<fetchPlan extends="_base"/>
<loader id="employeePositionsesDl" readOnly="false">
<query>
<![CDATA[select e from EmployeePositions e]]>
</query>
</loader>
</collection>
</data>
<facets>
<dataLoadCoordinator auto="true"/>
<urlQueryParameters>
<pagination component="pagination"/>
</urlQueryParameters>
</facets>
<actions>
<action id="selectAction" type="lookup_select"/>
<action id="discardAction" type="lookup_discard"/>
</actions>
<layout>
<hbox id="buttonsPanel" classNames="buttons-panel">
<button id="addButton" icon="vaadin:plus" text="msg://addButton.text"/>
<simplePagination id="pagination" dataLoader="employeePositionsesDl"/>
</hbox>
<dataGrid id="employeePositionsesDataGrid"
width="100%"
minHeight="20em"
dataContainer="employeePositionsesDc"
columnReorderingAllowed="true">
<actions>
</actions>
<columns resizable="true">
<column property="name" editable="true"/>
<editorActionsColumn width="32em" flexGrow="0">
<editButton text="Изменить" icon="PENCIL"/>
<saveButton text="Записать" icon="CHECK" themeNames="success"/>
<cancelButton text="Отменить" icon="DISC" themeNames="error"/>
<closeButton text="Закрыть" icon="CLOSE"/>
</editorActionsColumn>
</columns>
</dataGrid>
<hbox id="lookupActions" visible="false">
<button id="selectBtn" action="selectAction"/>
<button id="discardBtn" action="discardAction"/>
</hbox>
</layout>
</view>
Обратите внимание на эту тему: Не отрабатывает сохранение свойства в dataGrid при использовании Inline Editor
К сожалению, в документации в части Inline Editor это не упоминается…
А еще на режим режим редактирования editorBuffered
Надо или установить нужный режим на dataGrid
через соответствующий атрибут. Или указывать это в editorActionsColumn
:
...
<editorActionsColumn key="bufferedEditorColumn">
<editButton text="Edit" icon="PENCIL"/>
<saveButton icon="CHECK" themeNames="success"/>
<cancelButton icon="CLOSE" themeNames="error"/>
</editorActionsColumn>
...
Добрый день, Андрей!
действительно, вопрос решился этим методом:
Обратите внимание на эту тему: Не отрабатывает сохранение свойства в dataGrid при использовании Inline Editor 1
и да, в документации JMix & Vaadin нигде не нашел, что еще нужно обработчик события создавать…
Большое спасибо Вам за помощь!