在sap.m.table中使用两个模型来格式化控件

时间:2018-02-08 14:38:34

标签: xml sapui5

我有一个基于主细节模板的应用程序。

我有一个细节方面的表:

<Table id="lineItemsList" width="auto" items="{DO_LINII}" updateFinished="onListUpdateFinished" noDataText="{i18n>detailLineItemTableNoDataText}" busyIndicatorDelay="{detailView>/lineItemTableDelay}" class="sapUiResponsiveMargin">

它显示&#34; DO_LINII&#34;的元素。 model(但详细视图的模型是&#34; HEADER&#34; model - 详细视图的标题)。

在我表格的最后一栏内,我有一个输入字段:

<Input id="__input0" value="{BETRG}" width="70%" description="PLN" type="Number"/>

它包含来自模型DO_LINII的值BETRG。

问题是,此输入字段的启用必须依赖于来自另一个模型的状态(&#34; HEADER&#34;模型)。当然,我的意思是主视图中所选项目的状态。

我尝试使用此表达式绑定格式化此字段:

<Input id="__input0" value="{BETRG}" editable="{= ${HEADER/>STATUS} === 'N' || ${/HEADER/STATUS} === 'O' ? true : false }" width="70%" description="PLN" type="Number"/>

但它没有用。

有谁知道我的代码出了什么问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果你说&#34; DO_LINII&#34;是模型名称,然后绑定表达式的语法应如下所示:

<Table 
    id="lineItemsList" 
    width="auto" 
    items="{DO_LINII>/}" 
    updateFinished="onListUpdateFinished"
    noDataText="{i18n>detailLineItemTableNoDataText}" 
    busyIndicatorDelay="{detailView>/lineItemTableDelay}" class="sapUiResponsiveMargin">

</Table>

这里表达式 {DO_LINII&gt; /} 告诉运行时应该采用名称为 DO_LINII 的模型,然后应该采用它的根对象(/)阵列。

对于状态表达式(如果您的模型名称为 HEADER ),您应该使用:

<Input 
        value="{BETRG}" 
        editable="{= ${HEADER>/STATUS} === 'N' || ${HEADER>/STATUS} === 'O' ? true : false }" 
        width="70%" 
        description="PLN" 
        type="Number"/>

再次看到&gt;登录绑定表达式用于从属性名称中分隔模型名称。因此, {HEADER&gt; / STATUS} 引用模型HEADER的属性STATUS。

答案 1 :(得分:0)

<Input id="__input0" value="{BETRG}" editable="{= ${HEADER>/STATUS} === 'N' || ${HEADER>/STATUS} === 'O' ? true : false }" width="70%" description="PLN" type="Number"/>

尝试更改为此。其他一切都应该保持不变。看起来您试图错误地访问模型的属性。应为{MODELNAME&gt; / PROPERTYNAME}