在这里阅读有关这个问题的多个问题,但都没有帮助。
我有下表:
<Table id="table"
width="auto"
items="{
path: '/Master',
sorter: {
path: 'id',
descending: false
},
parameters: {
expand: 'ToB'
}
}"
>如何在表中显示ToB中的属性?由于ToB与Master有一对多的关系,这是行不通的(我猜这就是原因):
<cells>
<Text text="{ToB/name1}" />
</cells>然而,这样做是可行的:
<cells>
<VBox items="{ToB}">
<Text text="{name1}"/>
</VBox>
</cells>ToB有一个属性"selected“,可以是0或1。只有Master表中ID的一个条目可以是1,所以我认为这是一种获取1到1关系的方法。但是我想不出来,怎么做,已经用表达式绑定来尝试了:
<Text text="{= ${ToB/selected} === 1 ? ${ToB/name1} : 'No Entry'}"/>但它总是在我的桌子上显示“禁止进入”。
编辑:用于测试目的的:
<Text text="{= ${ToB/selected} === 1 ? ${ToB/name1} : ${ToB/name1}}"/>但是它只是让我的表的列空,所以我猜绑定是不正确的。
编辑2:为了澄清我的问题,我让它使用VBox工作,但是我希望每一行有一个条目,即对于特定的ID有Peter、Paul和Mary的名称,只有Peter有"selected“值1,所以我只想在这个表行中使用Peter。
发布于 2018-01-26 22:30:34
问题
text="{ToB/name1}"不能工作的原因是解析路径ToB返回集合,因为“多”-cardinality不适用于属性绑定。
另一方面,这也意味着它适用于聚合绑定,因为您已经可以在<VBox items="{ToB}"/>中观察到。
替代方案
我希望每一行有一个条目,即在特定的ID中有Peter、Paul和Mary的名称,只有Peter有"selected“值1,所以我只想在这个表行中使用Peter。
如果您只想在ToB的<VBox>中显示特定的实体,您可以直接在视图中分别定义一个过滤器。以您为例,由"selected" === 1编写。
<Table items="{
path: '/Master',
parameters: {
expand: 'ToB'
}
}">
<items>
<ColumnListItem>
<VBox items="{
path: 'ToB',
filters: [
{
path: 'selected',
operator: 'EQ',
value1: 1
}
]
}">
<Text text="{name1}"/>
</VBox>
<!-- ... -->
</ColumnListItem>
</items>
<!-- ... -->
</Table>https://stackoverflow.com/questions/47883646
复制相似问题