Fiori学习专题四十一:表单控件
上节课我们学习了一些单一控件的使用,但是我们发现在页面内每个控件都占用了一行,这样子就显得不太好看,这节课我们引入一个表单控件来美化一下这个页面。
1.学习表单控件FORM之前我们先了解下哪些情况会使用到表单控件,最常见的场景就是需要我们输入一些字段,这时会弹出一个对话框给我们输入,例如这样:
2.那么我们学习使用Form控件。
首先打开API参考看下,在class sap.ui.layout.form命名空间下找到Form控件,可以看到Form控件的常用属性,以及其类型,我们同样可以通过类型穿透进去看到其内部又有其他的什么属性:
formContainers:展示Form内容
layout:布局设置
title:标题
toolbar:工具栏
API样例Form。
3.基本上我们的学习思路就是这样,通过API了解控件,再通过样例去熟悉其中的用法。
4.我们根据样例,将上节课的页面修改一下,引入表单控件的命名空间
xmlns:l=“sap.ui.layout”
xmlns:f=“sap.ui.layout.form”
再分别将<f:title><f:formContainers> <f:layout>这几个属性嵌入进去,最后修改完就是这样子。其中layout属性里面有
columnsM=“2”
columnsL=“4”
columnsXL=“4”
指的是表单的列数,其中XL/L/M指的是界面尺寸,可以理解为不同设备展示时列数不同
<mvc:ViewcontrollerName="democontrol.controller.Overview"xmlns:mvc="sap.ui.core.mvc"xmlns="sap.m"xmlns:core="sap.ui.core"xmlns:l="sap.ui.layout"xmlns:f="sap.ui.layout.form"displayBlock="true"
>
<Page id="idpage"><HBox id="Vbox" class="sapUiSmallMargin"><f:Formid="FormDisplayColumn_oneGroup234"editable="false"><f:title><core:Titleid="idformtitle"text="Address"/></f:title><f:layout><f:ColumnLayoutid="idColumnLayout"columnsM="2"columnsL="4"columnsXL="4"/></f:layout><f:formContainers><f:FormContainer id="idFormContainer"><f:formElements><f:FormElementid="idButton"label="Button"><f:fields><Buttonid="button_hello"text="{i18n>hellotext}"press=".onSayHello"icon="sap-icon://world"/></f:fields></f:FormElement><f:FormElementid="idInput"label="Label"><f:fields><Inputid="productInput"placeholder="Enter product"showSuggestion="true"suggestionItems="{invoices>/Invoices}"showValueHelp="true"valueHelpRequest=".onValueHelpRequest"><suggestionItems><core:Itemid="suggestionItem"text="{invoices>ProductName}"/></suggestionItems></Input></f:fields></f:FormElement><f:FormElementid="idText"label="Label"><f:fields><Textid="tetx1"text="{firstModel>/text1}"/></f:fields></f:FormElement><f:FormElementid="idCheckBox1"label="Label"><f:fields><CheckBoxid="CheckBoxA"selected="true"text="option A"select="onSelectCheckBoxA"/></f:fields></f:FormElement><f:FormElementid="idCheckBox2"label="Label"><f:fields><CheckBoxid="CheckBoxB"selected="false"text="option B"select="onSelectCheckBoxB"/></f:fields></f:FormElement><f:FormElementid="idRadioButtonGroup"label="Label"><f:fields><RadioButtonGroupid="rbg2"columns="1"selectedIndex="2"class="sapUiMediumMarginBottom"select="onSelectRadio"><RadioButtonid="RB2-1"text="Option 1"/><RadioButtonid="RB2-2"text="Option 2"editable="false"/><RadioButtonid="RB2-3"text="Option 3"/></RadioButtonGroup></f:fields></f:FormElement><f:FormElementid="idSwitch1"label="Label"><f:fields><Switchid="switchId1"state="true"customTextOn="Yes"customTextOff="No"change="onSwitchChange1"/></f:fields></f:FormElement><f:FormElementid="idSwitch2"label="Label"><f:fields><Switchid="switchId2"type="AcceptReject"state="true"customTextOn="Yes"customTextOff="No"change="onSwitchChange2"/></f:fields></f:FormElement><f:FormElementid="idComboBox1"label="Label"><f:fields><ComboBoxid="comboBox1"change="onChangeCombox"><items><core:Itemid="comboBoxitem1"text="Yes"key="true"/><core:Itemid="comboBoxitem2"text="No"key="false"/></items></ComboBox></f:fields></f:FormElement><f:FormElementid="idComboBox2"label="Label"><f:fields><ComboBoxid="comboBox2"items="{SuggestModel>/}"change="onChangeCombox"selectedKey="{SuggestModel>/}"><items><core:Itemid="comboBox2item"text="{SuggestModel>value}"key="{SuggestModel>key}"/></items></ComboBox></f:fields></f:FormElement><f:FormElementid="idSelect1"label="Label"><f:fields><Select id="select1"><items><core:Itemid="selectitem1"text="Yes"key="true"/><core:Itemid="selectitem2"text="No"key="false"/></items></Select></f:fields></f:FormElement><f:FormElementid="idSelect2"label="Label"><f:fields><Selectid="select2"items="{suggestModel>/}"><items><core:Itemid="select2item"text="{suggestModel>value}"key="{suggestModel>key}"/></items></Select></f:fields></f:FormElement></f:formElements></f:FormContainer></f:formContainers></f:Form></HBox></Page>
</mvc:View>
当我们使用电脑显示时展示为4列
切换为Ipad尺寸时展示为了2列
5.表单控件我们初步了解到这里,有更深入的需求只需要查看样例,基本上都有。
相关文章:
Fiori学习专题四十一:表单控件
上节课我们学习了一些单一控件的使用,但是我们发现在页面内每个控件都占用了一行,这样子就显得不太好看,这节课我们引入一个表单控件来美化一下这个页面。 1.学习表单控件FORM之前我们先了解下哪些情况会使用到表单控件,最常见的场…...
基于STM32、HAL库的TDA7719TR音频接口芯片驱动程序设计
一、简介: TDA7719TR 是 NXP Semiconductors 推出的高性能音频处理芯片,专为汽车音响系统设计。它集成了 AM/FM 收音机调谐器、音频处理和音量控制功能,支持 I2C 控制接口,非常适合与 STM32 微控制器配合使用。 二、硬件接口: 典型的 STM32L4 与 TDA7719TR 硬件连接如下…...
Baklib智能云平台加速企业数据治理
Baklib数据治理核心优势 Baklib作为新一代企业级知识中台,其数据治理能力建立在全资产统一管理与智能化处理框架的双重基础之上。通过构建知识中台的核心架构,平台实现了图文、音视频等多模态数据的标准化存储与动态标签体系,有效解决传统管…...
面试中被问到谈谈你对threadlocal的理解
ThreadLocal 的核心理解 1. 基本概念 ThreadLocal 是 Java 提供的线程局部变量机制,用于在多线程环境中为每个线程维护独立的变量副本,实现线程隔离。其核心思想是空间换时间,通过避免共享变量带来的同步开销,提升并发性能。 2…...
Spring Boot 应用中实现基本的 SSE 功能
SSE 技术简介 SSE(Server-Sent Events)是一种允许服务器主动向客户端推送数据的技术。它基于 HTTP 长连接,使用简单,特别适合实时数据更新场景,如股票行情、新闻推送等。与 WebSocket 相比,SSE 更轻量级&a…...
【2025最新】Windows系统装VSCode搭建C/C++开发环境(附带所有安装包)
文章目录 为什么选择VSCode作为C/C开发工具?一、VSCode安装过程(超简单!)二、VSCode中文界面设置(再也不用对着英文发愁!)三、安装C/C插件(编程必备神器!)四、…...
【MyBatis-8】MyBatis对象关联查询详解:高效处理复杂关系映射
在实际业务开发中,我们经常需要处理对象之间的关联关系,如一对一、一对多、多对多等。MyBatis作为一款优秀的持久层框架,提供了强大的对象关联查询能力。本文将深入探讨MyBatis中各种关联查询的实现方式、适用场景及最佳实践。 1. MyBatis关…...
Java基础(IO)
所有操作都在内存,不能长时间保存,IO主要在硬盘,可以长时间保存。 一、File类 File类被定义为文件和目录路径名的抽象表示形式,这是因为 File 类既可以表示文件也可以表示目录,他们都通过对应的路径来描述。 提供构…...
Trae IDE:AI深度集成的智能开发环境
(以高效人机协作重塑编程体验) 概述 Trae IDE(发音 /treɪ/)是一款深度集成AI能力的现代化开发工具,结合传统IDE的完备功能与前沿AI技术,提供智能问答、代码自动补全、跨文件编程及AI Agent驱动的自动化开…...
网站开发过程中样式忽然不显示问题
老规矩,先听故事:今天我开发网站时候遇到一个问题,就开发的这个网站在默认127.0.0.1运行样式有bug显示不出来,之前都可以,就完全一样的代码,之前可以正常运行显示,今天忽然就不行了,…...
双种群进化算法:动态约束处理与资源分配解决约束多目标优化问题
双种群进化算法:动态约束处理与资源分配解决约束多目标优化问题 一、引言 约束多目标优化问题(CMOPs)在工程设计、资源分配等领域广泛存在,其核心是在满足多个约束条件的同时优化多个目标函数。传统方法往往难以平衡约束满足与目…...
如何在 CentOS 7 虚拟机上配置静态 IP 地址并保持重启后 SSH 连接
在使用 CentOS 7 的虚拟机时,我们通常需要配置静态 IP 地址,以确保在每次虚拟机重启后能够通过 SSH 连接。本文将介绍如何在 CentOS 7 系统中配置静态 IP 地址,并确保配置在系统重启后依然生效。 步骤 1:检查虚拟机网络接口 首先…...
整数和浮点数转换时的精度损失
文章目录 int和float转换时的精度损失float组成解析(1) 32位浮点数的结构(2)示例:解析一个浮点数(3)偏置值的作用(4) 偏置值为什么是127?(5&#…...
Protobuf工具
#region 知识点一 什么是 Protobuf //Protobuf 全称是 protocol - buffers(协议缓冲区) // 是谷歌提供给开发者的一个开源的协议生成工具 // 它的主要工作原理和我们之前做的自定义协议工具类似 // 只不过它更加的完善&…...
闭包原理与常见陷阱
引言 JavaScript闭包是前端开发中既强大又神秘的概念,它不仅是面试的必考题,更是解决复杂问题的利器。闭包让函数能够记住并访问其创建时的作用域,即使在该函数在其定义环境之外执行。 然而,正如许多强大的工具一样,…...
用 VS Code / PyCharm 编写你的第一个 Python 程序
用ChatGPT做软件测试 编写你的第一个 Python 程序——不只是“Hello, World”,而是构建认知、习惯与未来的起点 “第一行代码,是一个开发者认知世界的方式。” 编程的入门,不只是运行一个字符串输出,更是开始用计算机思维来理解、…...
Linux学习心得问题整理(一)
day01 运维初识 理解云计算运维目的是什么? 搭建云计算更有利于我们在公网环境下方便访问我们服务 节省时间的成本,能随时随地方便调度硬件资源,更容易搭建软件服务 安全可靠,售后期间支持技术支持维护 什么是运维?…...
在scala中sparkSQL连接masql并添加新数据
以下是 Scala 中使用 Spark SQL 连接 MySQL 并添加数据的完整代码示例(纯文本): 1. 准备连接参数(需替换实际信息) scala val jdbcUrl "jdbc:mysql://localhost:3306/test_db?useUnicodetrue&characterEnc…...
STM32F103_LL库+寄存器学习笔记22 - 基础定时器TIM实现1ms周期回调
导言 如上所示,STM32F103有两个基本定时器TIM6与TIM7,所谓「基本定时器」,即功能最简单的定时器。 项目地址: github: LL库: https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_ll_library22_Basic_Timer寄存器方…...
.Net HttpClient 使用Json数据
HttpClient 使用Json数据 现代Web项目中,Json是最常用的数据格式。不论是前后端的交互中,还是纯前端项目中,都是如此。因此,.Net HttpClient 能不能更加方便、快捷的处理Json格式数据,也就至关重要了! 文末…...
AI时代,如何实现人机共舞?
在科技飞速发展的当下,人工智能(AI)已不再是科幻作品中的遥远想象,而是深入渗透到我们生活与工作的方方面面。从智能手机中的语音助手,到金融领域的风险预测模型;从医疗影像的智能诊断,到工业生…...
flea-cache使用之Redis哨兵模式接入
Redis哨兵模式接入 1. 参考2. 依赖3. 基础接入3.1 定义Flea缓存接口3.2 定义抽象Flea缓存类3.3 定义Redis客户端接口类3.4 定义Redis客户端命令行3.5 定义哨兵模式Redis客户端实现类3.6 定义Redis哨兵连接池3.7 定义Redis哨兵配置文件3.8 定义Redis Flea缓存类3.9 定义抽象Flea…...
【Docker】Docker环境下快速部署Ollama与Open-WebUI:详细指南
Docker环境下快速部署Ollama与Open-WebUI:详细指南 在本篇文章中,我们将深入探讨如何在Docker中高效部署 Ollama 和 Open-WebUI,并解决在实际使用中常见的问题,确保你的模型服务稳定高效地运行。 一、Ollama 和 Open-WebUI 快速部…...
FFmpeg在Android开发中的核心价值是什么?
FFmpeg 在 Android 开发中的核心价值主要体现在其强大的多媒体处理能力和灵活性上,尤其在音视频编解码、流媒体处理及跨平台兼容性方面具有不可替代的作用。以下是具体分析: --- 1. 强大的音视频编解码能力 - 支持广泛格式:FFmpeg 支持几乎所…...
Java的进制转换
进制知识 Java 中使用不同的前缀表示数据,常见的进制数据有二进制(0b)、八进制(0)、十进制(无)、十六进制(0x)。 public class Demo1 {public static void main(String…...
SpringBoot中的拦截器
SpringBoot中的拦截器 Filter 典型场景 全局鉴权/接口耗时统计 WebFilter("/*") public class CostFilter implements Filter {Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {long start System.currentTimeMill…...
使用聊天模型和提示模板构建一个简单的 LLM 应用程序
官方教程 官方案例 在上面的链接注册后,请确保设置您的环境变量以开始记录追踪 export LANGSMITH_TRACING"true" export LANGSMITH_API_KEY"..."或者,如果在笔记本中,您可以使用以下命令设置它们 import getpass imp…...
paimon中批和流查看过去的快照的数据及变动的数据
1、批处理 创建表并插入三条数据 CREATE TABLE ws_t (id INT,ts BIGINT,vc INT,PRIMARY KEY (id) NOT ENFORCED ); INSERT INTO ws_t VALUES(2,2,2),(3,3,3),(4,4,4),(5,5,5); --设置执行模式为批处理 RESET execution.checkpointing.interval; SET execution.runtime-mode …...
Linux513 rsync本地传输 跨设备传输 一
ping节点bPing通 仅主机模式不需要设置网关节点a也可以Ping通节点b 同步成功 下载文件夹成功 今日源码 节点a 节点b...
c语言第一个小游戏:贪吃蛇小游戏08(贪吃蛇完结)
贪吃蛇撞墙和想不开咬死自己 #include <curses.h> #include <stdlib.h> struct snake{ int hang; int lie; struct snake *next; }; struct snake food; struct snake *head; struct snake *tail; int key; int dir; #define UP 1 #define DOWN -1 …...
Android Native 之 自定义进程
在Android五层架构中,native层基本上全是c的世界,这些c进程基本上靠android世界的第一个进程init进程创建,init通过rc配置文件,创建了众多的c子进程,也是这众多的c进程,构建了整个android世界的native层。 …...
深度学习 自然语言处理(RNN) day_02
1. 感知机与神经网络 1.1 感知机 生物神经元: 1.1.1 感知机的概念 感知机(Perceptron),又称神经元(Neuron,对生物神经元进行了模仿)是神 经网络(深度学习)的起源算法&am…...
Kotlin 中的作用域函数
在 Kotlin 中,作用域函数是一组用于在对象上下文中执行代码块的函数。 它们通过简洁的语法实现对对象的操作和逻辑封装。 作用域函数的对比: 1 let 特点: 通过 it 访问对象,需显式使用;返回值是代码块的最后一行结果…...
Linux的SLES系统和其他几大系统之间的区别
✅ SLES 和其他主流 Linux 发行版对比表 特性/发行版SLES (SUSE Linux Enterprise Server)RHEL (Red Hat Enterprise Linux)CentOS / AlmaLinux / RockyUbuntu ServerDebian定位企业级,注重稳定性和支持企业级,行业标准,广泛应用社区版 RHEL…...
上位机学习攻略、步骤和实战路径
目录 🎯 一、什么是上位机? 🧭 二、学习步骤和路径 第一步:了解基础概念 第二步:掌握通信协议 1. 常见协议: 2. 学习目标: 第三步:熟悉主流上位机软件 可选工具及语言&#…...
【爬虫】DrissionPage-1
官网地址:DrissionPage官网 小需求采集,我喜欢,我要学。 1 介绍 这是用python编写的爬虫自动化工具,将Selenium 和 Requests 的功能巧妙地整合在一起,提供了统一又简单的操作接口。开发者可以在浏览器模式࿰…...
API安全
目录 API安全:从威胁到防护的全面解析 引言 一、API安全的定义与重要性 1.1 API安全的核心目标 1.2 API安全的挑战 二、API的常见安全威胁 2.1 身份验证攻击 2.2 中间人攻击(MITM) 2.3 注入攻击 2.4 安全配置错误 2.5 拒绝服务&…...
UDP和TCP协议
目录 1. UDP协议 1.1. UDP的特性 1.2. UDP的包头 1.3. UDP的三大使用场景和实际例子 1.4. TCP和UDP的区别 2. TCP协议 2.1. TCP包头格式 2.2. TCP包头和UDP包头对比 2.3. TCP协议的特点 2.4. TCP的三次握手(连接维护问题) 2.5. TCP的四次挥手…...
关于Go语言的开发环境的搭建
1.Go开发环境的搭建 其实对于GO语言的这个开发环境的搭建的过程,类似于java的开发环境搭建,我们都是需要去安装这个开发工具包的,也就是俗称的这个SDK,他是对于我们的程序进行编译的,不然我们写的这个代码也是跑不起来…...
【Bootstrap V4系列】学习入门教程之 组件-导航(Navs)
【Bootstrap V4系列】学习入门教程之 组件-导航(Navs) 导航(Navs)一、Base nav二、Available styles 可用样式2.1 Horizontal alignment 水平对齐2.2 Vertical 垂直的2.3 Tabs 表格样式2.4 Pills 胶囊样式2.5 Fill and justify 填…...
基于单片机的视力保护仪设计与实现
标题:基于单片机的视力保护仪设计与实现 内容:1.摘要 随着电子设备的普及,人们的视力健康面临着严峻挑战。为了有效预防近视等视力问题,本文旨在设计并实现一款基于单片机的视力保护仪。通过采用红外传感器、光敏传感器等元件,实时监测使用者…...
如何避免和恢复因终端关闭导致的 LoRA 微调中断
环境: Ubuntu20.04 Llama factory Qwen2.5-7B-Instruct llama.cpp H20 95G 问题描述: 使用命令 CUDA_VISIBLE_DEVICES1 FORCE_TORCHRUN1 llamafactory-cli train examples/train_lora/qwen2_5-7b_lora_sft.yaml 进行 LoRA 微调时,如果…...
RT-linux 系统详解
RT-Linux(Real-Time Linux)是一种基于Linux内核的实时操作系统(RTOS),旨在为Linux添加硬实时(Hard Real-Time)能力,使其适用于对时间确定性要求极高的嵌入式系统和工业控制场景。以下…...
开源网络地图可视化第六章学习指南
源代码地址:开源网络地图可视化-配套代码.zip - 蓝奏云 配套书籍:开源网络地图可视化——基于Leaflet的在线地图开发 (杨乃) (Z-Library)(1).pdf - 蓝奏云 3 第六章Leaflet地图动画 3.1 图标动画 3.1.1 沿线运动 沿线运动的动画使用了Leaflet.Geode…...
网页常见水印实现方式
文章目录 1 明水印技术实现1.1 DOM覆盖方案1.2 Canvas动态渲染1.3 CSS伪元素方案2 暗水印技术解析2.1 空域LSB算法2.2 频域傅里叶变换3 防篡改机制设计3.1 MutationObserver防护3.2 Canvas指纹追踪4 前后端实现对比5 攻防博弈深度分析5.1 常见破解手段5.2 进阶防御策略6 选型近…...
# 08_Elastic Stack 从入门到实践(八)---1
08_Elastic Stack 从入门到实践(八)—1 一、Logstash入门之简介以及部署安装 1、Elastic Stack 技术栈示意图 2、Logstash 简介 Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。(存储库当然是Ela…...
携程酒店 phantom-token token1004 分析
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 部分python代码 搞APP搞的心态有点崩…...
物理:从人体组成角度能否说明基本粒子的差异性以及组织结构的可预设性?
人类的个体差异源于粒子组合的复杂性、环境与随机性的相互作用,而非基本粒子本身的差异性。以下分层次解析: 一、基本粒子的同质性与组合多样性 1. 基本粒子的同一性 标准模型确认:同种类基本粒子(如电子、上夸克)具有完全相同的质量、电荷等属性,不存在个体差异。泡利不…...
前端面试每日三题 - Day 33
这是我为准备前端/全栈开发工程师面试整理的第33天每日三题练习: ✅ 题目1:Deno核心特性深度解析 革命性特性详解 // 安全权限控制(运行时显式授权) deno run --allow-netapi.example.com server.ts // 内置TypeScript支持 …...
JavaScript编译原理
在编程语言的世界中,编译器(如 GCC、TypeScript)和转译器(如 Babel)扮演着至关重要的角色,它们负责将人类可读的代码转换为机器或其他语言可执行的指令。这一过程通常分为四个关键阶段: 1. 词法…...