我想通过使用标签来显示标量值。以下示例显示了客户订单金额的总和。
https://doc.cuba-platform.com/manual-6.8/value_datasources.html
<dsContext>
<valueCollectionDatasource id="salesDs">
<query>
<![CDATA[select o.customer, sum(o.amount) from demo$Order o group by o.customer]]>
</query>
<properties>
<property class="com.company.demo.entity.Customer" name="customer"/>
<property datatype="decimal" name="sum"/>
</properties>
</valueCollectionDatasource>
这里我想将加载的数据绑定到标签:
<label datasource="salesDs"
property="name"/>
但没有显示任何内容。
为什么标签值为空? (salesDs已正确加载,我可以使用intelliJ ...)
我也尝试从数据源中获取加载的数据,但我找不到正确的方法。
salesDs.getItem() //returns null
salesDs.getItems() //retruns a collection of KeyValueEntries
但是,从KeyValueEntry获取数据的正确方法是什么?
答案 0 :(得分:1)
如果您在集合数据源中选择了一个项目(无论是ValueCollectionDatasource还是普通的项目),它都会有效。它可以通过setItem()
或通过连接到同一数据源的某个可视组件以编程方式完成。
例如,在下面的屏幕中,标签显示当前在表格中选择的客户的名称:
<dsContext>
<valueCollectionDatasource id="customersDs">
<query>
<![CDATA[select e.name, e.email
from sales$Customer e]]>
</query>
<properties>
<property datatype="string"
name="name"/>
<property datatype="string"
name="email"/>
</properties>
</valueCollectionDatasource>
</dsContext>
<layout expand="customersTable" spacing="true">
<table id="customersTable" width="100%">
<columns>
<column id="name"/>
<column id="email"/>
</columns>
<rows datasource="customersDs"/>
</table>
<groupBox caption="Label">
<label id="nameLab"
datasource="customersDs"
property="name"/>
</groupBox>
</layout>