从ODATA调用中选择ComboBox中的第一项。 UI5

时间:2018-07-16 20:15:12

标签: combobox sapui5

我有一个组合框,其中填充了一个odata调用。

从主页上,我导航到带有此组合框的页面,并且希望此组合框选择ODATA调用的第一项作为默认/选定项。

我使用bindAggregation在onInit()函数中填充组合框

绑定对象后,我想阅读列表并选择第一个列表并选择它。

bindComboBox: function() {
    var comboBox = oView.byId("ComboBoxID");
    comboBox.bindAggregation("items", {
        path: path,
        parameters: param,
        sorter: sorter,
        template: template,
        filters: filter,
        events: {
            dataReceived: this.selectFirstItemFunction()
        }
}


selectFirstItemFunction: function() {
    var comboBox = oView.byId("ComboBoxID");
    var comboBoxItems = comboBox.getItems(); // This ends up being undefined.
    comboBox.setSelectedItem(comboBoxItems[0]);
}

执行此操作时,var comboBoxItems中的selectFirstItemFunction()始终为空/未定义。

我还尝试将selectFirstItemFunction()放在onAfterRendering()内,但这也不起作用。

如果页面已经加载,并且我执行了selectFirstItemFunction(),则组合框将按预期工作。

关于如何正确装入组合框的任何想法吗?

1 个答案:

答案 0 :(得分:2)

您没有将“ selectFirstItem”功能附加到事件。您在执行“ bindComboBox”时直接调用它。

对此进行更正:

dataReceived: this.selectFirstItemFunction.bind(this)

但是要小心,因为如果已经缓存了数据,则可能不会触发“ dataReceived”。所以也许您想使用“更改”事件

change: this.selectFirstItemFunction.bind(this)