在vaadin网格中启用wordwrap(多行)

我正在尝试基于Vaadin网格组件实现表.某些字段包含大量文本,网格在这种情况下始终显示单行而不是多行.

我试图根据vaadin forum的一些想法修改CSS,但我得到了相同的结果.同样在网格标题中也显示带有省略号的单行.

请提供任何想法如何解决?

最佳答案 网格从客户端管理这种风格,我们不能也不应该直接控制它.

但Grid组件提供了一种通过DetailsGenerator显示隐藏数据或详细信息的方法.

但是,对于标题,我们无法做任何事情,因为唯一的解决方案是尽可能保持标题小和描述性.但仍然在我看来,标题上的自动换行不会很好看.

以下示例管理项目选择的详细信息,

Grid g = new Grid();
g.addColumn("num");
g.addColumn("val");

g.setWidth(400, Unit.PIXELS);
g.setHeight(300, Unit.PIXELS);

g.getColumn("num").setWidth(100);
g.getColumn("val").setWidth(300);

g.addRow("1", "This is just a simple test. No need to take it too seriously, please !!!!");
g.addRow("2", "This is just a simple test. No need to take it too seriously, please !!!!");
g.addRow("3", "This is just a simple test. No need to take it too seriously, please !!!!");
g.addRow("4", "This is just a simple test. No need to take it too seriously, please !!!!");

g.addItemClickListener(new ItemClickListener() {

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

    @Override
    public void itemClick(ItemClickEvent event) {
        g.setDetailsVisible(event.getItemId(), !g.isDetailsVisible(event.getItemId()));
    }
});

g.setDetailsGenerator(new DetailsGenerator() {

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

    @Override
    public com.vaadin.ui.Component getDetails(RowReference rowReference) {
        String value = (String)rowReference.getItem().getItemProperty("val").getValue();
        Label val = new Label();
        val.setValue(value);
        val.addStyleName(ValoTheme.LAYOUT_HORIZONTAL_WRAPPING);
        return val;
    }
});

《在vaadin网格中启用wordwrap(多行)》

点赞