我是vaadin的新手。我想创建一个包含4列和N行的表,表格单元格包含文本字段,表格外面会有两个按钮,按钮点击第1个按钮会将更多行添加到表格中,然后点击在第二个按钮中,应将所有文本字段中的值添加到某个容器中。
我自己尝试使用Table.addGeneratedColumn("columnName", new ColumnGenerator() {});
并在其中创建一个TextField,但它没有显示在表中。另外,我也不知道如何为每个表行分配唯一的ID。
我已经知道使用BeanItemContainer将数据填充到vaadin表,但我不知道如何创建一个具有空TextFields的表,并且在按钮单击时我使用用户在字段中输入的值加载容器。
提前谢谢。
答案 0 :(得分:-1)
在朋友的帮助和一些搜索中,我已按以下方式完成: -
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();
}
}
}