Добавить кнопку в IndexedContainer с сеткой Ваадина - PullRequest
0 голосов
/ 31 января 2019

В настоящее время я определил IndexedContainer со многими свойствами типа String.Я добавил этот индексированный контейнер в сетку Vaadin 7. Он работал правильно.

Теперь я хочу сделать один из моих столбцов кликабельным.Для этого я создал следующий код (на самом деле небольшая часть кода):

modifyReportButton = new Button();

modifyReportButton.setIcon(IconUtil.MODIFY_16PX_ICON.getIcon());
modifyReportButton.setDescription("Modifier"); 
modifyReportButton.setStyleName(Runo.BUTTON_LINK);
modifyReportButton.setWidth("30px");//ticket7021                         
modifyReportButton.addListener(modifyReportFromExplorerClick);                       
modifyReportButton.addClickListener(modifyReportFromExplorerClick);
modifyReportButton.setData(lightReport);
item.getItemProperty("modify").setValue(modifyReportButton);

Проблема в том, что кнопка вообще не отображается в сетке.Вот снимок:

Сетка с проблемой кнопки

На самом деле, я должен сделать это следующим образом.Я имею в виду, что я должен использовать IndexedContainer внутри сетки, в противном случае мне придется изменить многие связанные классы (проект настолько велик, и мы не можем выделить высокую стоимость для обслуживания).

Заранее спасибо.

1 Ответ

0 голосов
/ 06 июня 2019

Вы должны использовать GeneratedPropertyContainer для добавления столбца кнопки и ButtonRenderer.

// Generate button caption column
GeneratedPropertyContainer gpc = new GeneratedPropertyContainer(yourIndexedContainer);
gpc.addGeneratedProperty("modify", new PropertyValueGenerator<String>() {

    @Override
    public String getValue(Item item, Object itemId, Object propertyId) {
        return "Modify Report";
    }

    @Override
    public Class<String> getType() {
        return String.class;
    }
});

grid.setContainerDataSource(gpc);
grid.getColumn("modify").setRenderer(new ButtonRenderer(modifyReportFromExplorerClick()));

Дополнительная информация в документе Grid Component doc https://vaadin.com/docs/v7/framework/components/components-grid.html

...