SAP CRM checkbox的一个例子,如下图Main Partner列:

一个用户肉眼可见的Checkbox,在SAP CRM系统里由总共6个HTML标签组合而成。
当Checkbox里的勾选中时,最外层的wrapper div标签的class变为th-sapcb-chkd,chkd是checked的缩写。 内层a标签属性值aria-checked设置为true.
div内层一个隐藏的input标签,用于同ABAP后台进行值传递,其value属性值变为X.
当Checkbox勾选时,上述介绍的最外层wrapper div的class变为th-sapcb-blk, blk意为blank; 内层a标签的aria-checked属性设置为false,hidden input的value属性值置空。
而Checkbox的小勾视觉效果,通过a标签的CSS::before选择器实现。如上图黄色所示。
::before选择器的用法,通过下面这个简单的例子可以学会——在施加了::before选择器的HTML元素前部,添加选择器content属性指定的内容。
'\e05d’代表小勾:
我们试着在Chrome开发者工具里将这个content属性值改一改。’\e05c’代表hint,一个小感叹号:
'\e05d’代表group:
::before选择器的width和height属性控制Checkbox矩形框的宽和高:
这一套content属性值和对应的icon视觉效果图的映射关系,可以在这个链接里获得:
https://sapui5.hana.ondemand.com/test-resources/sap/ui/core/Icon.html当然,SAP CRM的开发人员,是不会直接编写原生的HTML代码的。在SAP CRM里需要将一个控件定义成Checkbox,只需要实现这个控件绑定的模型节点字段的GET_P方法:
里面将控件的fp_fieldtype设置为field_type_checkbox.
Jerry之前的文章 SAP UI 搜索分页技术 提到,SAP CRM UI采用服务器端渲染技术,WebClient UI框架基于上述维护的控件元数据,为一个Checkbox控件,在ABAP端渲染出上述介绍的总共7个HTML元素。