Внутристрочное редактирование DataGrid

Добрый день.

У меня при нажатии Create(actions) в DataGrid открывается окно добавления сущности. Возможно ли сделать так чтоб окно редактирования не открывалось, а сразу появлялась строка(пустая) в Grid, которую я бы могла отредактировать?

Спасибо.

Если коротко, то добавьте кнопку, по которой:

  1. Создайте связанную сущность с помощью metadata.create
  2. Добавьте ее в датасет
  3. Если отношение ассоциация, перед сохранением необходимо закоммитить связанную сущность
  4. У атрибутов таблицы должно быть установлено свойство editable="true"

Только после того как написал, увидел, что речь идет о DataGrid, а не о Table. С DataGrid не работал.

Здравствуйте,

DataGrid имеет режим внутристрочного редактирования. Чтобы его активировать достаточно свойства:
editorEnabled="true".

Подробнее можно узнать в документации.
Пример в sampler.

1 симпатия

Небольшой пример.
При нажатии на кнопку создастся новый экземпляр сущности, который мы добавляем в источник данных и сразу открываем его во внутристрочном редакторе DataGrid.

@Inject
private Button addButton;
@Inject
private DataGrid<Customer> customersDataGrid;
@Inject
private CollectionDatasource<Customer, UUID> customersDs;
@Inject
private Metadata metadata;

@Override
public void init(Map<String, Object> params) {
    Action addAction = new BaseAction("addCustomerAction").withHandler(actionPerformedEvent -> {
        Customer customer = metadata.create(Customer.class);
        customersDs.addItem(customer);

        customersDataGrid.edit(customer);
    });
    addButton.setAction(addAction);
}
1 симпатия

пытаюсь сейчас добавить этот кусочек кода, у меня только вместо
addButton.setAction(addAction);
прописано
vagonListDataGrid.addAction(addAction);
и возникает ошибка : NullPointerException
то есть я хочу не кнопкой добавление строки сделать, а с помощью действия по правой клавиши(в gride properties actions)

Попробовал добавить action в DataGrid, NPE не возникает. Возможно, что-то не проинициализировано: NPE появляется при открытии экрана или когда пытаетесь создать сущность?
Будет немного проще выяснить проблему, если пришлёте демо проект, в котором данная проблема воспроизводится.

в protected void initNewItem
у меня экран редактирования сущности, в ней поля самой сущности, плюс таблица(DataGrid) другой сущности

к сожалению не смогу прислать проект

и эта ошибка точно происходит на строке vagonListDataGrid.addAction(addAction); прошла отладчиком

Убедитесь, что ваш vagonListDataGrid != null, можно прямо в отладчике посмотреть в Watches

да действительно vagonListDataGrid null , а каким образом нужно проинициализировать Grid?

Вы должны получить его при помощи метода getComponent("<id>") или аннотировать ваше поле @Inject.

вот так?

@Inject
private DataGrid<CmVagonList> vagonListDataGrid;

у меня сейчас так

А какой id у DataGrid в XML экрана?

P.S. Используйте, пожалуйста, блоки кода для форматирования ``` - до и после блока.

Спасибо, получилось!