в документе метаданных, чтобы использовать
Я создаю небольшую демонстрационную страницу, которая отображает некоторые прямые функции UI5. Эта страница состоит из двух основных страниц:
На первой странице есть список операторов, которые можно создавать, удалять и обновлять. Эти перевозчики имеют идентификатор (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>
Данные привязаны к столбцам с этим кодом:
// Get routing data and show only entrys with the matched primary key (Carrid)
_onRouteMatched: function(oEvent) {
// ...
var oArgs = oEvent.getParameter("arguments");
var oFlightTable = oView.byId("detailTable");
oFlightTable.bindAggregation("items", {
path: "/CarrierSet(" + "'" + oArgs.flightPath + "'" + ")/FlightSet",
template: new sap.m.ColumnListItem({
cells: [
new sap.m.Text({
text: "{Carrid}"
}),
new sap.m.Text({
text: "{Connid}"
}),
new sap.m.Text({
text: "{Cityfrom}"
}),
new sap.m.Text({
text: "{Deptime}"
}),
new sap.m.Text({
text: "{Cityto}"
}),
new sap.m.Text({
text: "{Arrtime}"
})
]
})
});
}
проблемаКод работает нормально, если данные можно отобразить, не манипулируя им в первую очередь. Но поля{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);
});
}
});
Это генерирует этот вывод, который является правильным:
Но я не могу правильно связать эти манипулированные данные в таблицу снова. Я попробовал это сOData.read()
функции и некоторые другие довольно хакерские подходы, но я никогда не был успешным, и я застрял с этой проблемой в течение достаточно долгого времени.
Если у кого-то есть идея или предложение, я буду более чем благодарен, если вы дадите мне знать.