我想为SAPUI5中的输入字段创建自定义建议。我设法创建了一个表格建议,其中包括3列{Name
,AdName
,Telno
}。
这是我的代码:
<Input id="_txtCustomerName" liveChange="liveChange" placeholder="{i18n>customername}" showTableSuggestionValueHelp="false"
suggestionItemSelected="suggestionSelected" startSuggestion="1" showSuggestion="true" suggest="suggest" suggestionRows="{/results}" >
<suggestionColumns>
<Column hAlign="Begin" popinDisplay="Inline" demandPopin="true">
<Label text="{i18n>customername}"/>
</Column>
<Column hAlign="Center" popinDisplay="Inline" demandPopin="true" minScreenWidth="Tablet">
<Label text="{i18n>address}"/>
</Column>
<Column hAlign="End" popinDisplay="Inline" demandPopin="true">
<Label text=" {i18n>phoneno}"/>
</Column>
</suggestionColumns>
<suggestionRows>
<ColumnListItem>
<cells>
<Label text="{Name}"/>
<Label text="{AdName}, {City}"/>
<Label text="{Telno}"/>
</cells>
</ColumnListItem>
</suggestionRows>
</Input>
它正确地将数据从ABAP服务器加载到SuggestionRows属性,仅由Name
过滤。现在我想要按Name
和Telno
过滤建议表。有什么建议吗?
P / s:我试图遵循这个帖子的指南:https://archive.sap.com/discussions/thread/3811696但它似乎对我不起作用。
suggest: function(oEvent) {
var sValue = oEvent.getParameter("suggestValue");
var filters = new sap.ui.model.Filter([
new sap.ui.model.Filter("Name",
sap.ui.model.FilterOperator.Contains,
sValue),
new sap.ui.model.Filter("Telno",
sap.ui.model.FilterOperator.Contains,
sValue)
], false);
oEvent.getSource().getBinding("suggestionRows").filter(
[filters]);
}
它会为oEvent.getSource().getBinding("suggestionRows")
返回undefind,表示我无法找到suggestionRows
聚合。
答案 0 :(得分:1)
sap.m.Input 控件将按“名称”过滤数据,即使您添加了自己的过滤器也是如此。您必须停用默认过滤器&amp;添加自己的过滤器逻辑。您可以通过将filterSuggests属性更改为false来禁用它。
<Input id="_txtCustomerName" filterSuggests="false" ....
这将禁用控件使用的默认过滤逻辑here。现在您的自定义过滤器逻辑应该可以工作。