SAPUI5:ObjectAttribute自动换行文本

时间:2018-01-30 15:31:11

标签: sapui5

我试图在SAP UI5应用程序的ObjectAttribute中显示一个包装的长文本:

<List id="__listObjectAttributes" noDataText="Drop list items here" headerText="Shipping Information" items="{Shipments}">
    <items>
        <ObjectListItem id="__listItemShipments" title="{ShipmentTxt}">
            <attributes>
                <ObjectAttribute id="__attributeShipmentId" title="Shipment #" text="{Id}"/>
                <ObjectAttribute id="__attributeShipmentCode"   title="Shipment Code" text="{ShipCd}"/>
                <ObjectAttribute id="__attributeShipmentLongText" title="Long Text" text="{LongText}" binding="{ShipmentLongText}"/>
            </attributes>
        </ObjectListItem>
    </items>
</List>

问题是,当显示列表时,文本被截断而不是包装。 我一直在寻找将文本包装在ObjectAttribute 中的方法,但无济于事。

我找到的文章都说“你可以做到”和“你做不到”。

可能:https://archive.sap.com/discussions/thread/3589475

不可能:https://experience.sap.com/fiori-design-web/object-list-item/

如果无法将此信息添加到ObjectAttribute,是否有人知道在接受包装文本的列表中显示相同信息的方法?

解决方案

@Ran Hassid的回答是正确的!将CustomListItem与SimpleForm结合使用是最佳解决方案。以下是我最终使用的代码:

<List id="__listObjectAttributes" noDataText="Drop list items here" headerText="Shipping Information" items="{Shipments}">
    <items>
        <CustomListItem id="__listItemShipments">
            <content>
                <form:SimpleForm id="__formShipmentList" editable="true" layout="GridLayout" labelMinWidth="100">
                    <form:content>
                        <!--Id-->
                        <Label id="__labelShipmentId" text="Id"/>
                        <Text id="__textShipmentId" text="{Id}"/>
                        <!--Shipment Code-->
                        <Label id="__labelShipmentCode" text="Shipment Code"/>
                        <Text id="__textShipmentCode" text="{ShipCd}"/>
                        <!--Long text-->
                        <Label id="__labelShipmentLongText" text="LongText"/>
                        <Text id="__textShipmentLongText" text="{Longtext}" binding="{ShipmentLongText}"/>
                    </form:content>
                </form:SimpleForm>
            </content>
        </CustomListItem>
    </items>
</List>

然后我将sap.ui.layout.form添加到mvc:View以简化代码:

<mvc:View xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc" xmlns:semantic="sap.m.semantic" xmlns:form="sap.ui.layout.form" controllerName="shipments.controller.ShipmentDetail">

1 个答案:

答案 0 :(得分:3)

我认为即使有可能(我假设通过css更改等)也不推荐使用它,因为它不是ObjectAttribute接口的一部分。为了达到同样的效果,您可以执行以下操作之一:

  1. 使用CustomListItem代替ObjectListItem,并在其内容中包装一个SimpleForm。简单的表单布局应为网格布局,因为您希望将标题旁边的文本放在同一行中。在文本控件中,您可以根据需要设置最长的字符串,并控制它的包装。所以你的代码应该看起来像那样(我没有使用绑定,但我想你会知道你的代码中要做什么)
  2. <List noDataText="Drop list items here" id="__list0">
      <items>
        <CustomListItem type="Navigation" id="__item1">
          <content>
            <sap.ui.layout.form:SimpleForm xmlns:sap.ui.layout.form="sap.ui.layout.form" xmlns:sap.ui.core="sap.ui.core" editable="true" layout="GridLayout" id="__form0" labelMinWidth="100">
              <sap.ui.layout.form:content>
                <sap.ui.core:Title text="Title" id="__title0" />
                <Label text="Long Text" id="__label1" />
                <Text text="Very long text with\nmultiple lines" />
                <Label text="Other text" id="__label2" />
                <Text text="Some text goes here" />
              </sap.ui.layout.form:content>
            </sap.ui.layout.form:SimpleForm>
          </content>
        </CustomListItem>
      </items>
    </List>

    1. 第二个选项是使用 CustomListItem ,但使用VBOX + HBOX。所以你有一个包装HBOX的VBOX,在每个HBOX中,你把标题放在文本旁边。
    2. 我建议采用第一种方法,因为它更加清晰,反应灵敏。

      祝你好运。