所以我试图从保存汽车寄存器编号的组合框中获取所选值。这样用户可以选择AAA-111,BBB-222等。
现在我希望能够掌握用户在组合框中选择的值,但我似乎找不到以“AAA-111”形式获取它的方法。当我使用getValue()时,Vaadin想把它作为“entiteetit.Korjaustiedot@4024af35”。我没有用它。
我希望能够对它进行编码,就像它一样:好的,选择“AAA-111”,现在只需按一下按钮就可以在屏幕上获得AAA-111的信息。有关如何从组合框中获取价值的任何想法吗?
var distinctIds = AllFields
.AsEnumerable()
.Select(s => new {id = s.Field<string>(ColumnName),})
.Distinct()
.Where(f =>
f.id != null &&
f.id.Contains(TxtStringSearchInput.Text))
.ToList();
答案 0 :(得分:1)
以与您相同的方式创建组合框时,您可以执行以下操作:
BeanItemContainer<Korjaustiedot>(Korjaustiedot.class, korjaukset)
。请注意,它不是将显示的字符串集合,但它们是真实的模型对象,例如用户,汽车,帐户等。select.setItemCaptionPropertyId("registernumber")
。getProperty().getValue()
访问所选项目,则不会返回客户可以看到的所选项目的字符串表示形式。您将返回整个Car对象。因此,如果您在其上调用toString()
,则会得到"entiteetit.Korjaustiedot@4024af35"
,因为它是复合对象而不是字符串。如果您想要注册号,您可以将其作为一个字段从您获得的对象中获取Property().getValue()
。可以在Book of Vaadin中找到容器和项目集合的精美描述 - Collecting Items in Containers
答案 1 :(得分:0)
你可以使用Vojtech Ruzicka的答案,也可以将getValue方法强制转换为你的类,它应该可以工作。
select.addValueChangeListener(event->{
this.addComponent(new Label("Selected " + (Korjaustiedot)this.getValue()))})
您不需要事件来执行此操作,您只需要覆盖类的toString方法。