jakarta-ee - 使用 Grid Vaadin 在 IndexedContainer 中添加一个按钮
问题描述
目前我已经定义了一个带有许多字符串类型属性的 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,否则我将不得不更改许多相关的类(项目如此之大,我们无法分配高昂的维护成本)。
提前致谢。
解决方案
您必须使用 aGeneratedPropertyContainer
添加按钮列和 a 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
推荐阅读
- python - 删除二叉树中的叶节点
- wix - Wix MajorUpgrade afterInstallInitilize
- c - 在 C 中使用管道发送单个字母
- rust - 如何在 Rust 中定义递归类型别名?
- reactjs - 哪个 React API 端点允许 react-devtools-extension 从存储访问 DOM 和挂钩数据?
- swift - 如何比较一天中的两个日期?
- esp8266 - 是否可以通过 wifi 更新 micropython?
- react-native - * 出了什么问题:评估脚本时出现问题
- jquery - Ztree - 创建跨时期的变量总和
- r - 使用 dplyr 从列中修改一行