0

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

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

4

1 回答 1

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>
于 2018-03-20T08:04:36.203 回答