Vaadin:如何从数据库容器网格

时间:2015-11-20 22:12:27

标签: vaadin

如何从容器/ item / grid / db / entity / bean / class / object / ID中删除行?

另外,这些之间的区别是什么? 每个人似乎都说这些似乎是可以互换的。 我可以简单解释这些如何一起工作吗? 我已经浏览了几十个YouTube视频和教程,但我仍然看不到大局。

简单任务:从网格中删除一行。

但是随后嵌套的beanitem容器属性字段实体开始越来越大,越来越复杂,我无法理解它。

提前感谢您的所有帮助!

1 个答案:

答案 0 :(得分:1)

用于显示数据集的 Grid Table或任何其他Vaadin Component使用 Container <的某些实现/ strong>存储您的数据。 Component是您的用户界面的一部分,<div>中的DOM是最终用户可以看到的。 Vaadin Containers包含对象。最广泛使用的容器是:

  • IndexedContainer - GridTable的默认容器。您通常通过在容器或相关组件上调用addItem方法来添加。使用这种容器的缺点是你通常有义务在两个项目和容器本身上设置适当的properties(想想列),
  • BeanContainer - 能够接收遵循JavaBean约定的Java对象。因此,它能够自动推断组件的属性,
  • SQLContainer - 包含存储在数据库中的数据。使用SQL查询构造。可以设置为根据用户在UI中所做的更改自动更新数据库。

项目和ID

将单个项目添加到某些容器可能看起来有点复杂。有几种方法可以做到这一点。它们在Vaadin website上得到了很好的描述。基本上,ID是您用来访问相应Item的唯一对象。 Item表示组件中的单行。每个Item都有属性。您可以使用他们的ID访问和更改容器中的项目,例如

table.getItem("uniqueId");

通常,您不直接在容器上操作。这些组件通过其API公开基本的Container接口方法。在当前AbstractSelect.getItem()组件的示例实现中(Vaadin 7.5.9):

protected Container items;
public Item getItem(Object itemId) {
    return items.getItem(itemId);
}

AbstractSelect是其他Vaadin组件的超类,如TableGrid

项目的属性变得更加复杂。每个Item都有一些属性(列)。每个Property都有相应的ID。使用属性ID,您可以访问特定列中项目的值。上面的代码如上所示 - 它添加了一个具有一个属性的项目并设置其值:

Table table = new Table();
table.addContainerProperty("column1", String.class, "defaultValue");
Item item = table.addItem("uniqueId");
item.getItemProperty("column1").setValue("Black Friday");

请注意,使用String文字作为ID是完全安全的,因为它们使用equals()进行比较