在Vaadin表中创建Textfields,并在按钮上单击一个容器中获取其价值



我是vaadin的新手。我想创建一个具有4列和n行的表,并且表单元格包含文本字段,表面将有两个按钮,单击1st按钮的按钮,将添加更多行,然后单击单击。在第二个按钮中,应将所有文本场中的值添加到某个容器中。我自己使用Table.addGeneratedColumn("columnName", new ColumnGenerator() {});尝试了一下,并在其中制作了一个文本字段,但它没有显示在表格中。另外,我也不知道如何为每个表行分配唯一的ID。我已经想到使用BeanTemcontainer将数据填充到Vaadin表中,但是我不知道如何创建一个具有空文本字段的表,并且在按钮上单击我加载容器中,用户已在字段中输入的值。预先感谢。

您可以使用GridaddComponentColumn

Grid<YouBeanType> grid = new Grid<>();
grid.setSizeFull();
grid.setItems(youBeanCollection); // list of you beans
grid.addColumn(YouBeanType::getContractGUID).setCaption("GUID"); // getter for GUID or something else in you bean
grid.addColumn(YouBeanType::getContractState).setCaption("State"); // state
grid.addComponentColumn((YouBeanType source) -> {
    return new Label("controls here"); // you can return component here
}).setCaption("Controls column");
grid.addColumn((YouBeanType source) -> {
    if (source.getIsNotContract() != null) {
        return source.getIsNotContract().getContractNumber();
    } else {
        return "";
    }
}).setCaption("Contract Number");
grid.sort("signingDate", SortDirection.DESCENDING);

在朋友的帮助下,一些搜索我以下方式进行了操作: -

public class MyTableClass extends VerticalLayout implements View, ValueChangeListener, ClickListener{
private Table myTable = new Table();
private  Button btnAddRow = null;
private  Button btnSave = null;
private  int rowIdsCount = 0;
private TextField txtf1 = new TextField();  
private TextField txtf2 = new TextField();  
private TextField txtf3 = new TextField();  
private TextField txtf4 = new TextField();
private Table createTable()
{
    myTable.addContainerProperty("TextField1", TextField.class, null);
    myTable.addContainerProperty("TextField2",  TextField.class, null);
    myTable.addContainerProperty("TextField3",  TextField.class, null);
    myTable.addContainerProperty("TextField4",  TextField.class, null);
    MyTableClass obj = new MyTableClass();
    myTable.addItem(new Object[] { obj.txtf1, obj.txtf2, obj.txtf3, obj.txtf4 },
                    ++rowIdsCount);
    return myTable;
}                   
    private Table addRow() {
    MyTableClass obj = new MyTableClass();
    myTable.addItem(new Object[]{obj.txtf1,obj.txtf2,obj.txtf3,obj.txtf4}, ++rowIdsCount);
    return myTable;
}
public void buttonClick(ClickEvent event) {
        if (btnAddRow.equals(event.getButton())) {
                this.addRow();
        } 
        else if(btnSave.equals(event.getButton())){
        for (int i = 1; i <= this.rowIdsCount; i++) {
            String txtf1Val = myTable.getItem(i).getItemProperty("TextField1").getValue().toString().trim();
            String txtf2Val = myTable.getItem(i).getItemProperty("TextField2").getValue().toString().trim();
            String txtf3Val = myTable.getItem(i).getItemProperty("TextField3").getValue().toString().trim();
            String txtf4Val = myTable.getItem(i).getItemProperty("TextField4").getValue().toString().trim();
            }
        }
}

最新更新