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元素。