具有输入文本过滤功能的组合框-SAP UI5

时间:2019-03-27 18:24:31

标签: sapui5

我有一个select控件,可以从用户名中进行选择。现在,我要将选择的内容转换为组合框,以便使用户也可以输入文本。组合框中填充的值在文本属性中为{FirstName},{LastName}。我不想使用额外的文本,因为它显示在行尾且中间有很多空格。我的组合框问题是:

填充值,但如何过滤?在更改方法上已经编写了一些逻辑。我想对值进行自定义过滤。例如:如果我写“ P”,它应该在文本中显示所有带有P的值(名字和姓氏)。在哪里写过滤功能?另外我在demokit中找到了自定义过滤代码,我想使用它-但是当我在委托下的inti方法中使用它时,出现错误-this.get .... setfilterfunction()..不是函数

View.xml

<ComboBox items= "{path:'items>/name'}" id="A"
  selectedKey="{item>/Header/Name}" change="nameSelected">
<core:ListItem key="{order>NameID}" text="{order>LastName} ,{order>FirstName}"/>
 </ComboBox>    

Controller.js

_initializeData: function () {
var name = this.getView().byId("A");
 name.addEventDelegate({
      onAfterRendering: function() {
        this.getView().byId("A").setFilterFunction(function(sTerm, oItem) {
           return oItem.getText().match(new RegExp(sTerm, "i")) || 
                  oItem.getKey().match(new RegExp(sTerm, "i"));
        });
       }
      }, 

    nameSelected: function () {
     ......some logic processing..
   }

1 个答案:

答案 0 :(得分:0)

您必须将此绑定到您的函数中。我猜。 在onAfterRendering部分中放置断点时,可以访问this.getView()。byId(“ A”)吗?

尝试此解决方案:您的工作范围不合适。

 _initializeData: function () {

                var name = this.getView().byId("A");
                name.addEventDelegate({
                    onAfterRendering: this.setFilter.bind(this) });
            },


            setFilter: function() {
                this.getView().byId("A").setFilterFunction(function(sTerm, oItem) {
                    return oItem.getText().match(new RegExp(sTerm, "i")) ||
                        oItem.getKey().match(new RegExp(sTerm, "i"));
                });
            },
相关问题