2016-08-15 30 views
4

我想基於Vaadin網格組件實現表格。在這種情況下,某些字段包含大量文本和網格總是顯示單行而不是多行。在vaadin網格中啓用wordwrap(多行)

我試圖修改CSS根據vaadin forum的一些想法,但我得到了同樣的結果。在網格標題中同樣的情況下,它顯示帶有省略號的單行。

請提供任何想法如何解決它?

回答

2

網格從客戶端管理這種風格,我們不能也不應該直接控制它。

但是網格組件提供了一種顯示隱藏數據的方法或的細節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; 
    } 
}); 

enter image description here

+0

謝謝回答!我嘗試過實現類似的東西,但在我的表格12列中,其中一些應該是多行的,並且具有細節生成器,它看起來有點奇怪。同樣你也很難過,標題中的mutline看起來不太好,即時通訊同意你的看法,但是有了真實的數據,而不是帶有名稱/值的示例或展示,由bussines引起的列名,所以你不能只改變它們。謝謝! – aim