sap.ui.table.Column 仅关注最后一个控件和表达式绑定不起作用



我在 sap.ui.table.Table中有一列。在此列中,我想根据值显示我的模板控件。如果我有DateTime的类型,我想使用 DatePicker,type of DateTime a DateTimePicker等。

现在,我想在我的xmlview/fragment中有所不同,但它仅检查我的最后一个控件(dateTimePicker(:

<table:template>
  <Input id="masterDataValueInput"
    value="{thingDetail>value}"
    placeholder="{path:'thingDetail>type', formatter:'.formatter.placeHolderFormatter'}"
    visible="{= ! ${path: 'thingDetail>properties'} &amp;&amp; ${path: 'thingDetail>type', formatter: '.formatter.inputVisibility'}}"
    enabled="{appView>/isCurrentTenant}"
    type="{path:'thingDetail>type', formatter:'.formatter.inputTypeFormatter'}"
  />
  <DatePicker id="masterDataValueDate"
    value="{thingDetail>value}"
    displayFormat="short"
    visible="{= ! ${path: 'thingDetail>properties'} &amp;&amp; ${path: 'thingDetail>type', formatter: '.formatter.dateVisibility'}}"
    enabled="{appView>/isCurrentTenant}"
    change="handleChange"
  />
  <DateTimePicker id="masterDataValueDateTime"
    value="{thingDetail>value}"
    displayFormat="short"
    visible="{= ! ${path: 'thingDetail>properties'} &amp;&amp; ${path: 'thingDetail>type', formatter: '.formatter.datetimeVisibility'}}"
    enabled="{appView>/isCurrentTenant}"
    change="handleChange"
  />
</table:template>
  • 因此,<Input><DatePicker>控件从未显示。
  • 我的formatter中的方法从未被调用。

仅考虑最后一个控件(dateTimePicker(的原因是因为sap.ui.table.column的template聚合仅等待一个控件(0..1(。

为了使用所有三个控件,您必须将它们包含在另一个容器/布局控件中,例如HorizonTallayout:

<table:template>
  <layout:HorizontalLayout>
    <!-- your controls -->
  </layout:HorizontalLayout>
<table:template>

关于表达式绑定..

尝试使用parts

visible="{= !${thingDetail>properties} &amp;&amp; ${parts: [{path: 'thingDetail>type'}], formatter: '.formatter.inputVisibility'}}"

如果没有称呼格式化器,则将表达式绑定(无论如何都很难阅读(,然后与适当的格式化构成通常的属性:

visible="{
  parts: [
    'thingDetail>properties',
    'thingDetail>type'
  ],
  formatter: '.formatter.myFormatter'
}"

最新更新