2016-09-08 43 views
1

我在vaadin中創建了一個表。我正在從數據庫中選擇列。我需要一個按順序給每一行編號的列。如何在Vaadin中創建序列號列

我現在用的是

Table table = new Table(); 

對於Grid:

GeneratedPropertyContainer wrappingContainer = new GeneratedPropertyContainer(container); 
      wrappingContainer.addGeneratedProperty("rowHeader", new PropertyValueGenerator<Long>(); 

table.setContainerDataSource(wrappingContainer); 
     table.setColumnOrder("rowHeader", "name", "surname"); 

    layout.addComponent(table); 
+0

最簡單的就是修改你的sql查詢來生成一個現在的編號 –

回答

1

使用生成列爲:

table.addGeneratedColumn("index", new ColumnGenerator(){ 
    @Override 
    public Object generateCell(final Table source, final Object itemId, final Object columnId) 
    { 
     Container.Indexed container = (Container.Indexed) source.getContainerDataSource(); 
     return Integer.toString(container.indexOfId(itemId)); 
    } 
}); 

// add it to the start of the visible columns 
table.setVisibleColumns("index", /* other columns ... */); 

你從容器中的行數。 該表雖然必須與實現Indexed子接口的容器一起使用,例如BeanItemContainer或IndexedContainer。

這是你用的是什麼網:

// the GeneratedPropertyContainer is a decorator for the original container 
final GeneratedPropertyContainer gpc = new GeneratedPropertyContainer(container); 
grid.setContainerDataSource(gpc); 
gpc.addGeneratedProperty("index", new PropertyValueGenerator<String>(){ 
    @Override 
    public String getValue(final Item item, final Object itemId, final Object propertyId) 
    { 
     // get the index from the original container 
     final Container.Indexed indexContainer = (Container.Indexed) container; 
     return Integer.toString(indexContainer.indexOfId(itemId)); 
    } 

    @Override 
    public Class<String> getType() 
    { 
     return String.class; 
    } 
}); 

// ... 

grid.setColumnOrder("index", /* the other property IDs... */); 

如果使用PropertyValueGenerator<Long>你需要設置一個NumberRenderer該類型。 grid.getColumn("index").setRenderer(new NumberRenderer("%d"));將會訣竅。

+0

謝謝你也是同樣的工作對於網格.. – dhS

+0

隨着網格你使用GeneratedPropertyContainer爲此目的。你把你的容器放到生成的容器中,用'addGeneratedProperty'添加類似於上面解決方案的單元格,並將網格容器設置爲GeneratedPropertyContainer。 –

+0

感謝您的編輯......我得到索引列的所有列,但沒有得到它裏面的數據。 – dhS