Combobox zk:在组合框中绑定数据

Combobox zk:在组合框中绑定数据,combobox,zk,Combobox,Zk,我有实体FDataTableColumn,它具有字段referenceField,它是长类型,并引用到此类列的id上。在创建页面上,我有一个包含所有列的组合框,我想选择一个,并将其id值放入我的ReferenceFieldDid。 这是我的组合框: <combobox model="@load(fdtcm.fDataTableColumns)" selectedItem="@bind(fdtcm.fDataTableColumn.referenceFieldId)" width="50%

我有实体FDataTableColumn,它具有字段referenceField,它是长类型,并引用到此类列的id上。在创建页面上,我有一个包含所有列的组合框,我想选择一个,并将其id值放入我的ReferenceFieldDid。 这是我的组合框:

<combobox model="@load(fdtcm.fDataTableColumns)"  selectedItem="@bind(fdtcm.fDataTableColumn.referenceFieldId)" width="50%">
                                <template name="model">
                                    <comboitem label="@load(each.table.tableName.concat('.').concat(each.tableField))" value="@bind(each.id)"/>
                                </template>
                            </combobox>
我知道我的组合试图将整个对象保存到ReferenceFieldDid,但是为什么呢?因为我正试图保存对象的id

value="@bind(each.id)"

有人能帮我解释一下我做错了什么吗。谢谢

您可以查看我编写的以下代码,这将解释您使用Combobox的正确方法

编辑:-

然后你可以检查这个链接,这将帮助你

LookselectedItem应该是类的对象FDataTableColumn,但在您的情况下,您将其称为id,它是长的,这可能是异常的原因,请更改代码。

这样做是可能的,但正如askkuber已经指出的那样,组合框中的类就是要保存的类

现在,您只需实施:

那么zul应该是这样的:

selectedItem="@bind(fdtcm.fDataTableColumn.referenceFieldId) @converter(fdtcm.myConverter)"

我以前见过这个代码。您正在使用extra class SelectOption选择项目。但是(如果我理解正确的话)combobox能够在没有任何新类的情况下选择对象,我的意思是如果我想从类列表TestClass保存到字段TypeOfTestClass,就不需要创建新的类来进行选择,只有combobox就足够了。这就是为什么我认为,我不仅可以从列表中选择整个对象,而且可以只选择我需要的字段,这样做不需要新的类。我写过关于combobox和转换器的文章。使用它们合法吗?我写道,如果覆盖defualt转换器,它也将用于其他组合框,这将是类型不匹配或不同类型的异常?在我的情况下,我正在努力把长相变成长相!我绑定的不是整个对象,而是它的id字段,但它不起作用(((尝试绑定selectitem中的类。)selecteditem对列表中的对象有效,而不是单个变量。仅供参考,阅读本文以保存或还原所选项,我们应该将selecteditem绑定到类型等于模型对象的属性。在我们的示例中,我们应该绑定“selecteditem”感谢,我用实体类中的@Transient field解决了我的问题。
selectedItem="@bind(fdtcm.fDataTableColumn.referenceFieldId) @converter(fdtcm.myConverter)"