在此步骤中,我们为产品列表添加一个搜索字段,并定义一个表示搜索项的过滤器。搜索时,列表会自动更新,只显示与搜索项匹配的项。

Preview

A search field is displayed above the list

Coding

You can view and download all files at Walkthrough - Step 24.

webapp/view/InvoiceList.view.xml

<mvc:View
controllerName="sap.ui.demo.walkthrough.controller.InvoiceList"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<List
id="invoiceList"
class="sapUiResponsiveMargin"
width="auto"
items="{invoice>/Invoices}" >
<headerToolbar>
<Toolbar>
<Titletext="{i18n>invoiceListTitle}"/>
<ToolbarSpacer/>
<SearchFieldwidth="50%"search="onFilterInvoices"/>
</Toolbar>
</headerToolbar>
<items>
<ObjectListItem>

</ObjectListItem/>
</items>
</List>
</mvc:View>

视图由我们添加到发票列表中的搜索控件扩展。我们还需要为列表控件指定一个ID invoiceList,以便能够从添加到搜索字段的事件处理程序onfilterinvoice函数中标识列表。此外,搜索字段是列表标题的一部分,因此,对列表绑定的每次更改都会触发整个列表的重新发布,包括搜索字段。

headerToolbar聚合替换了以前用于列表标题的简单标题属性。工具栏控件更加灵活,可以根据需要进行调整。我们现在用sa .m在左侧显示标题。标题控件、空格符和sap.m。右边是搜索区。

webapp/controller/InvoiceList.controller.js

sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel",
"sap/ui/demo/walkthrough/model/formatter",
"sap/ui/model/Filter",
"sap/ui/model/FilterOperator"
], function (Controller, JSONModel, formatter,Filter,FilterOperator) {
"use strict";
return Controller.extend("sap.ui.demo.walkthrough.controller.InvoiceList", {
formatter: formatter,
onInit : function () {
var oViewModel = new JSONModel({
currency: "EUR"
});
this.getView().setModel(oViewModel, "view");
},
onFilterInvoices :function(oEvent){ // build filter array
var aFilter =[];
var sQuery = oEvent.getParameter("query");
if(sQuery){
aFilter.push(newFilter("ProductName",FilterOperator.Contains, sQuery));
} // filter binding
var oList =this.byId("invoiceList");
var oBinding = oList.getBinding("items");
oBinding.filter(aFilter);
}
});
});

我们为筛选加载了两个新的依赖项。filter对象将保存过滤器操作的配置,FilterOperator是一个帮助类型,我们需要它来指定过滤器。

在onfilterinvoice函数中,我们从用户在搜索字段中键入的搜索字符串构造筛选器对象。事件处理程序总是接收一个事件参数,该参数可用于访问事件提供的参数。在我们的例子中,search字段定义了一个参数查询,我们可以通过调用oEvent参数上的getParameter(“query”)来访问这个参数查询。

如果查询不为空,我们将向仍然为空的筛选器数组添加一个新的筛选器对象。但是,如果查询为空,则使用空数组筛选绑定。这确保我们再次看到所有列表元素。如果希望搜索多个数据字段,还可以向数组中添加更多筛选器。在我们的示例中,我们只在ProductName路径中搜索,并指定一个过滤器操作符来搜索给定的查询字符串。

该列表是用我们在视图中指定的ID访问的,因为控件自动以视图ID作为前缀,所以我们需要向视图请求带有助手函数byId的控件。在列表控件中,我们访问聚合项的绑定,以便使用我们新构造的筛选器对象对其进行筛选。这将根据搜索字符串自动筛选列表,以便在触发搜索时只显示匹配的项。过滤器操作符 FilterOperator.Contains不区分大小写。

Parent topic: Walkthrough

Previous: Step 23:
Custom Formatters

Next: Step 25:
Sorting and Grouping

Related Information

API Reference: sap.ui.model.Filter

API Reference: sap.ui.model.FilterOperator

API Reference: sap.m.SearchField

UI5-文档-4.24-Filtering的更多相关文章

  1. ELK学习总结(2-4)bulk 批量操作-实现多个文档的创建、索引、更新和删除

    bulk 批量操作-实现多个文档的创建.索引.更新和删除 ----------------------------------------------------------------------- ...

  2. 安卓版 WPS 使用电脑字体、安卓版 WPS 添加字体、安卓 WPS 无法显示文档真实字体(24)

    1. 前言 安卓版WPS默认只有那么几种字体,查看电脑的Office文档无法显示文档的真实字体.想要用更多的字体需要开会员,这里提供免费方案. 2. 操作步骤 1.先在手机中打开一个要查看的文档: 2 ...

  3. LTE 测试文档(翻译)

    Testing Documentation 翻译 (如有不当的地方,欢迎指正!)     1 概述   为了测试和验证 ns-3 LTE 模块,文档提供了几个 test suites (集成在 ns- ...

  4. 【转】刚发现一个linux在线文档库。很好很强大。

    原文网址:http://blog.csdn.net/longxibendi/article/details/6048231 1.网址: http://www.mjmwired.net 2.比如查看这个 ...

  5. ReactiveX/RxJava文档中文版

    项目地址:https://github.com/mcxiaoke/RxDocs,欢迎Star和帮忙改进. 有任何意见或建议,到这里提出 Create New Issue 阅读地址 ReactiveX文 ...

  6. Spring Boot文档

    本文来自于springboot官方文档 地址:https://docs.spring.io/spring-boot/docs/current/reference/html/ Spring Boot参考 ...

  7. KOTLIN开发语言文档(官方文档) -- 入门

    网页链接:https://kotlinlang.org/docs/reference/basic-syntax.html 1.   入门 1.1.  基本语法 1.1.1.   定义包 包说明应该在源 ...

  8. Kotlin开发语言文档(官方文档)-- 目录

    开始阅读Kotlin官方文档.先上文档目录.有些内容还未阅读,有些目录标目翻译还需琢磨琢磨.后续再将具体内容的链接逐步加上. 文档链接:https://kotlinlang.org/docs/kotl ...

  9. ABP文档 :Overall - Introduction

    介绍 我们基于不同的需求创建不同的应用,但却在一次又一次地实现相同或相似的结构.至少在某种程度上,授权.验证.异常处理.日志.本地化.数据库连接管理.配置管理.审计日志属于通用的结构. 另外我们总是在 ...

  10. 将word文档A表格中的内容拷贝到word文档B表格中

    Function IsFileExists(ByVal strFileName As String) As Boolean ) <> Empty Then IsFileExists = T ...

随机推荐

  1. 命令行net time同步时间(内网)

    首先还是推荐大家使用Internet时间来同步自己计算机的时间,这样做主要是方便,就是设置一个ntp服务器,我推荐下面的三个ntp服务器地址. time.asia.apple.com //亲测有效 a ...

  2. opencart安装和使用PHPMailer

    一.安装PHPMailer 1)先给opencart项目安装vqmod 下载最新版本: http://code.google.com/p/vqmod (目前最新版本是vqmod-2.5.1-stand ...

  3. Composer 技巧(以 FastAdmin 项目为基础)(2018-12-25 更新)

    Composer 技巧(以 FastAdmin 项目为基础) 查看 FastAdmin 所有的已安装的 php 组件,如果不加 i 就是查看 composer.json 里的组件. composer ...

  4. tyvj1061Mobile Service

    题目:http://www.joyoi.cn/problem/tyvj-1061 dp.枚举三个人现在的位置. 1.重点:当前必有一人正处在查询点上!于是省掉一维. 2.转移方程枚举上一阶段的 j 和 ...

  5. Dynamics CRM 2011 怎么根据记录的etc参数值找到实体英文名和根据etc参数值或英文名称找到其实体中文名称

    一.平常我们可以打开CRM2011一条已创建的记录,通过JScript方法获取实体英文名的方法是:按F12,输入contentIFrame.Xrm.Page.data.entity.getEntity ...

  6. Apache Shiro在web开发安全框架中的应用

    前阶段就hadoop的分享了一些内容,希望对新手入门的朋友有点帮助吧!对于hadoop新手入门的,还是比较推荐大快搜索的DKHadoop发行版,三节点标准版还是值得拥有的(三节点的标准版是可以免费下载 ...

  7. Windows平台下的线程同步

    引子: 这几天在写一个windows phone平台上的service,由于Windows phone 的内核是基于Windows NT的,这也意味着写Windows Phone的Service代码与 ...

  8. linux 搭建 redis

    找了很多教程总有一个适合我 http://www.cnblogs.com/_popc/p/3684835.html 当然我的目录是/opt/redis   文章中的目录是/usr/local/redi ...

  9. theme为dialog的Activity如何充满全屏

     转自:http://blog.csdn.net/fzh0803/article/details/9787615 分类: android_点滴记录2013-08-06 10:33 2005人阅读 评论 ...

  10. BASIC-17_蓝桥杯_矩阵乘法

    示例代码: #include <stdio.h>#define N 30 int main(void){ int n = 0 , m = 0 , sum = 0; int i = 0 , ...