首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用栅格变量在IndexedContainer中添加按钮

使用栅格变量在IndexedContainer中添加按钮
EN

Stack Overflow用户
提问于 2019-01-31 23:37:30
回答 1查看 95关注 0票数 0

目前,我已经定义了一个具有许多String类型属性的IndexedContainer。我已经将这个索引容器添加到Vaadin 7网格中,它工作正常。

现在我想让我的一个列可点击。为此,我创建了以下代码(实际上是代码的一小部分):

代码语言:javascript
复制
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);

问题是该按钮根本不会显示在网格中。这是一个快照:

Grid with Button problem

事实上,我必须这样做。我的意思是,我必须在网格中使用IndexedContainer,否则我将不得不更改许多相关的类(该项目太大了,我们无法分配高昂的维护成本)。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-06-06 16:04:40

您必须使用GeneratedPropertyContainer来添加按钮列和ButtonRenderer

代码语言:javascript
复制
// 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()));

有关更多信息,请参阅网格组件文档https://vaadin.com/docs/v7/framework/components/components-grid.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54464104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档