【问题标题】:SAPUI5 Smart table expandSAPUI5 智能表展开
【发布时间】:2017-10-04 01:17:33
【问题描述】:

使用公开可用的 Nortwhind oData v2 服务,我可以使用以下代码在普通 sap.m.Table 中扩展产品和供应商实体:

<Table 
    id="table" 
    width="auto" 
    class="sapUiResponsiveMargin" 
    items="{ 
        path: '/Products', 
        parameters : { expand: 'Supplier' } 
    }">
    <columns>
        <Column id="nameColumn">
            <Text 
                text="{i18n>tableNameColumnTitle}" 
                id="nameColumnTitle" />
        </Column>
        <Column hAlign="End">
            <Text text="test" />
        </Column>
    </columns>
    <items>
        <ColumnListItem 
            type="Navigation" 
            press="onPress">
            <cells>
                <ObjectIdentifier title="{ProductName}"/>
                <Text text="{Supplier/CompanyName}"/>
            </cells>
        </ColumnListItem>
    </items>
</Table>

现在如何使用智能表实现相同的输出?基于这个post,我尝试了以下方法:

<sap.ui.comp.smarttable:SmartTable 
    xmlns:sap.ui.comp.smarttable="sap.ui.comp.smarttable" 
    tableType="ResponsiveTable" 
    header="Smart Table"
    enableAutoBinding="true" 
    entitySet="Products" 
    initiallyVisibleFields="ProductName" 
    tableBindingPath="Supplier"/>

但它不起作用。有什么建议吗?

【问题讨论】:

    标签: odata sapui5 sap-fiori


    【解决方案1】:

    我更进一步了。我添加了以下代码:

    onBeforeRebind: function(oEvent) { var mBindingParams = oEvent.getParameter("bindingParams");
    mBindingParams.parameters["expand"] = "Supplier"; },
    

    这就是如何在 Smarttables 上使用 $expand

    有没有办法显示来自其他实体的列?

    仅通过 NavigationProperty。您需要像下面提到的那样扩展您的 smarttable 列:

    <smartTable:SmartTable 
            entitySet="Products"
            tableType="ResponsiveTable"
            header="Products" showRowCount="true"
            enableAutoBinding="true"
            class="sapUiResponsiveContentPadding">
            <Table>
                <columns>
                    <Column width="100px" hAlign="Left">
                        <customData>
                            <core:CustomData key="p13nData"
                                value='\{"columnKey": "p13nDataKey",  "columnIndex":"4", "leadingProperty": "Supplier"}' />
                        </customData>
                        <Text text="{/#Supplier/Name/@sap:label}" />
                    </Column>
                </columns>
                <items>
                    <ColumnListItem>
                        <cells>
                            <Text
                                text="{Supplier/Name}" />
                        </cells>
                    </ColumnListItem>
                </items>
            </Table>
        </smartTable:SmartTable>
    

    【讨论】:

    • 嗨 Haos,你知道如何过滤 /sorter 或分组列供应商/名称吗?我可以过滤产品表的另一列,除非供应商表的列(我的意思是集合表)。谢谢...Dieu
    【解决方案2】:

    我更进一步了。我添加了以下代码:

        onBeforeRebind: function(oEvent) {
    var mBindingParams = oEvent.getParameter("bindingParams");
        mBindingParams.parameters["expand"] = "Supplier";
    },
    

    触发 beforeRebindTable 事件。它在后端触发获取扩展实体集。问题是我仍然只能看到第一个实体中的列,因为它是在 entitySet 参数中指定的。有没有办法显示来自其他实体的列?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多