如何从OData服务正确地将日期/时间添加到UI?

语境

我正在创建一个演示页面,该页面显示UI5的一些直接功能。该页面包括两个主要页面:


在第一页上,有一个可以创建,删除和更新的运营商列表。这些运营商有一个ID(Carrid)。

如果单击某个承运商,他们将被转到第二页,表格中将显示所选承运方的所有航班(其中包含有关航班的一些信息)。

该表如下所示:


<Table id="detailTable" inset="false" class="sapUiResponsiveMargin">

    <columns>

        <Column>

            <Text text="ID" />

        </Column>

        <Column>

            <Text text="Flightnumber" />

        </Column>

        <Column>

            <Text text="Starts in" />

        </Column>

        <Column>

            <Text text="Departs at" />   

        </Column> 

        <Column>

            <Text text="Lands in" />   

        </Column> 

        <Column>

            <Text text="Lands at" />   

        </Column>

    </columns>

</Table>

问题

如果可以不先处理就可以显示数据,则代码可以正常工作。但字段{Deptime}和{Arrtime}有型Edm.Time,我需要先转换,才能在人类可读的形式来显示。

我可以通过以下代码来实现这一点(我知道,这不是最有效的方法,但是我仍在学习中。因此,如果有任何改进,请随时发布):


pageTable.addEventDelegate({

    onAfterRendering: function() {

        var mTable = this.getView("FilterBarSimple").byId("detailTable");

        var mModel = mTable.getModel();

        var aItems = mTable.getItems();


        // ----- TIME CONVERSION ----


        var arrayTime = [];

        for (var iTime = 0; iTime < aItems.length; iTime++) {

            var iAdded = mModel.getProperty("Deptime", aItems[iTime].getBindingContext());

            arrayTime.push(iAdded);

        }

        var timeFormat = sap.ui.core.format.DateFormat.getTimeInstance({

            pattern: "kk:mm:ss"

        });

        var tz = new Date(0).getTimezoneOffset() * 60 * 1000;

        var arrayTimeClean = [];

        $.each(arrayTime, function(ii, ee) {

            var timeStr = timeFormat.format(new Date(ee.ms + tz));

            arrayTimeClean.push(timeStr);

        });

    }

});

这将生成正确的输出:

Image_Of_Converted_Output


但是我无法再次将此操纵数据正确绑定到表中。我已经尝试过使用该OData.read()函数和其他一些不太实用的方法,但是我从未成功过,并且在相当长的一段时间里一直困扰着这个问题。


如果有人有想法或建议,如果您让我知道,我将不胜感激。


慕田峪7331174
浏览 436回答 2
2回答

慕田峪9158850

我正在使用sap.ui.model.odata.type.Time,但对我来说,问题是使用默认格式会使此值P00DT00H00M00S而不是此PT0H0M0S一个,而OData服务给出了奇怪的错误:Cannot read property '1' of null
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server