目前,我已经定义了一个具有许多String类型属性的IndexedContainer。我已经将这个索引容器添加到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,否则我将不得不更改许多相关的类(该项目太大了,我们无法分配高昂的维护成本)。
提前谢谢。
发布于 2019-06-06 16:04:40
您必须使用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()));有关更多信息,请参阅网格组件文档https://vaadin.com/docs/v7/framework/components/components-grid.html
https://stackoverflow.com/questions/54464104
复制相似问题