zoukankan      html  css  js  c++  java
  • Step 24: Filtering

    Step 24: Filtering

    https://ui5.sap.com/#/topic/5295470d7eee46c1898ee46c1b9ad763

    List控件的过滤器功能

    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>
                <Title text="{i18n>invoiceListTitle}"/>
                <ToolbarSpacer/>
                <SearchField width="50%" search=".onFilterInvoices"/>
             </Toolbar>
          </headerToolbar>
          <items>
             <ObjectListItem>
    		…
             </ObjectListItem/>
          </items>
       </List>
    </mvc:View>
    

    1,新加了id属性,为了在event handler代码里找到List控件。
    2,headerToolbar,list控件的头部表示
    3,Title 在list控件的头部的左侧
    4,加个间距
    5,,输入框,触发的事件的代码在本view的controller里,函数名字是onFilterInvoices

    webapp/controller/InvoiceList.controller.js

    sap.ui.define([
    	"sap/ui/core/mvc/Controller",
    	"sap/ui/model/json/JSONModel",
    	"../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(new Filter("ProductName", FilterOperator.Contains, sQuery));
    			}
    
    			// filter binding
    			var oList = this.byId("invoiceList");
    			var oBinding = oList.getBinding("items");
    			oBinding.filter(aFilter);
    		}
    	});
    });
    

    1,先创建filter array。aFilter是空数组,oEvent.getParameter("query")是得到用户的输入,如果输入不是空,new Filter,使用ProductName字段最为过滤字段,FilterOperator.Contains指定是包含关系(不区分大小写)
    2,filter创建好后,使用byId方法找到view里的list控件,getBinding是得到list控件当前的绑定,用创建好的filter修改当前的绑定(oBinding.filter)

    vx:xiaoshitou5854

  • 相关阅读:
    模板引擎使用详解:包含公共模板
    ThinkPHP3.2 常量参考
    ThinkPHP的全部配置选项
    报错compile_str() flow.php on line 375的解决方法
    mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
    Mac下新安装的MySQL无法登陆root用户解决方法
    IOS-第三方开源库
    IOS-每个程序员的编程之路上都应该看这11本书
    IOS-程序员和设计师必备的20个CSS工具
    IOS-2016年最好的15个Web设计和开发工具
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/15236633.html
Copyright © 2011-2022 走看看