Skip to content

Describe other ways to create a component renderers for a DataGrid #1115

@KremnevDmitry

Description

@KremnevDmitry

Where: https://docs.jmix.io/jmix/flow-ui/vc/components/dataGrid.html#component-renderer

What:

Other ways of creating a component should be described in accordance with the constructors of the com.vaadin.flow.data.renderer.ComponentRenderer:

Image

For example:

    @Supply(to = "dataGrid.property", subject = "renderer")
    private Renderer<Entity> dataGridPropertyRenderer_1() {
        return new ComponentRenderer<>(() -> {
            // simply create a component
            return new Span("Simple value");
        });
    }

    @Supply(to = "dataGrid.property", subject = "renderer")
    private Renderer<Entity> dataGridPropertyRenderer_2() {
        return new ComponentRenderer<>(entity -> {
            // simply create a component by entity
            return new Span(entity.getValue());
        });
    }

    @Supply(to = "dataGrid.property", subject = "renderer")
    private Renderer<Entity> dataGridPropertyRenderer_3() {
        return new ComponentRenderer<>(() -> {
            // create a component first
            return new Span();
        }, (span, item) -> {
            // then fill the component attributes by entity
            span.setText(item.getValue());
        });
    }

    @Supply(to = "dataGrid.property", subject = "renderer")
    private Renderer<Entity> dataGridPropertyRenderer_4() {
        return new ComponentRenderer<>(item -> {
            // create a component by entity
            return new Span();
        }, (component, item) -> {
            if (item.getValue() == null) {
                // then update the created component by entity
                ((HasText) component).setText("<nothing>");
                return component;
            } else {
                // or create a new one
                return new Div(item.getValue());
            }
        });
    }

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions