使用ValueDataSource显示标量值

时间:2018-03-17 14:21:26

标签: cuba-platform

我想通过使用标签来显示标量值。以下示例显示了客户订单金额的总和。

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获取数据的正确方法是什么?

1 个答案:

答案 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>