0

我是 Vaadin 的新手,我创建了一个表,我可以通过 BeanItemCONtainer 填充其中的数据,下面是代码。

public Component getMainContent(ViewChangeListener.ViewChangeEvent event) {
        List<ExecutionPlanVO> executionPlanVOs = executionPlanDelegate.getExecutionPlans(getSearchVO());
        Table table = new Table();
        BeanItemContainer<ExecutionPlanVO> container = new BeanItemContainer<ExecutionPlanVO>(ExecutionPlanVO.class, executionPlanVOs);
        container.addBean(new ExecutionPlanVO());
        table.setContainerDataSource(container);
        table.setVisibleColumns(
                new Object[] {"billOfladingNo" , "containerNo" , "houseBill" , "carrier" , "customer" , "origin" , "pol" , "transshipment" ,
                        "pod" , "destination" , "start" , "completion" , "status"});
        table.setColumnHeaders(
                new String[] {"Bill Of Lading" , "Container No." , "House Bill" , "Carrier" , "Customer" , "Origin" , "POL" , "Transshipment" ,
                        "POD" , "Destination" , "Start (LT)" , "Completion (LT)" , "Status"});
        table.setStyleName("ep-list-table");
        return table;

    }

我在这里有两个问题,1.我想将 billOfladingNo 列更改为链接,当我单击时会执行一些操作?2. 我想再添加一列带有几个链接图标?

你能帮我如何添加列吗?

在此先感谢基兰。

4

2 回答 2

0

您可以创建一个类来实现 ColumnGenerator 以返回链接和图标。我在下面做了一个示例

class Linker implements ColumnGenerator{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    public Object generateCell(Table source, Object itemId, Object columnId) {
        // TODO Auto-generated method stub

        Item item = source.getItem(itemId);
        Link link = new Link();
        String linkCaption = item.getItemProperty("billOfladingNo").toString();
        link.setCaption(linkCaption);
        link.setResource(new ExternalResource("http:/www.domain.com/"+linkCaption));
        return link;
    }



}

class LinkIcons implements ColumnGenerator{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    public Object generateCell(Table source, Object itemId, Object columnId) {
        // TODO Auto-generated method stub

        Label icons = new Label();
        icons.setIcon(FontAwesome.LINK);
        return icons;
    }
}
    table.addGeneratedColumn("billOfLading", new Linker());
table.addGeneratedColumn("link", LinkIcons);

确保从 bean 中隐藏你的 billoflading 并将生成的列 ID 添加到表可见 ID。

于 2015-06-24T05:41:47.447 回答
-1

如果 7.XX 则取决于您使用的 vaadin 版本:

您可以在容器上设置所选列的类型:

container.addContainerProperty("billOfladingNo", new Link, null);

第一个参数是您的列的属性

第二个是你想要的类型

第三个是默认值

这将使您的列类型:com.vaadin.ui.Link

使用可能的导航创建新链接:

        Link link = new Link("CAPTION", new ExternalResource("URL"));

对于第二个问题,您需要将链接标题设置为接受 HTML,然后设置 FontAwesome 图标 html:

    link.setCaptionAsHtml(true);
    link.setCaption(FontAwesome.ANCHOR.getHtml());
于 2015-06-16T17:28:29.610 回答