GertB
GertB

Reputation: 1

How to set different select items in Vaadin Grid Pro's editComponent based on row item

I have Grid Pro displaying Products. A single column is configured as an EditColumn of type 'select' (dropdown/combobox). I'm trying to set the items for this component based on the Product of that row. Is this possible using the 'select' editColumn?

I tried to achieve what I want using the grid's 'addCellEditStartedListener' event, but I can't seems to access the editComponent from CellEditStartedEvent..

thx!

Upvotes: 0

Views: 362

Answers (1)

Tatu Lund
Tatu Lund

Reputation: 10643

Yes, the this is missing feature in CellEditStartedEvent. As an alternative you can use custom editor in your edit column, as then you have reference to the field you are using, see example

    // Use custom editor
    EmailField emailField = new EmailField();
    emailField.setWidth("100%");
    emailField.addThemeName("grid-pro-editor");
    grid.addEditColumn(Person::getEmail)
            .custom(emailField, (item, newValue) -> {
                item.setEmail(newValue);
            }).setHeader("E-mail ");
    // Use edit started listener to set the field conditionally enabled
    grid.addCellEditStartedListener(event -> {
        if (!event.getItem().isSubscriber()) {
            emailField.setReadOnly(true);
        } else {
            emailField.setReadOnly(false);
        }
    });

Full code here: https://cookbook.vaadin.com/grid-pro-conditional-edit

Upvotes: 1

Related Questions