文本框可以算是业务系统中最常用的控件了,没有之一。由于使用范围广,所以您可以用它来做各种各样的输入框,单也必然会涉及到下面这些需求:
1、校验需求:比如用它来输入身份证号码、车牌号、车架号、手机号、邮箱等,需要能够校验输入的数据是否正确;
2、安全存储:比如用它来输入敏感信息如证件号码,联系电话,地址等,需要能够加密存储;
3、压缩存储:有些情况下用它来输入几百几千字的长文本,需要能够压缩存储;
4、唯一性需求:某些情况下比如用于输入员工工号,姓名,客户名等,需要在系统中有唯一性校验,重复的不能保存;
5、OCR需求,比如用于输入证件号码,希望能够对接OCR;
6、联动性需求,比如输入身份证号码,希望能够根据输入的身份证号码自动计算出生日期,性别等等;
7、其他:比如要能够有默认值,要能够设置最大长度...。
文本框控件位于开发平台“工具箱\常规工具下”:
在页面上添加好“文本框”以后需要设置其属性,由于需求繁多所以我们分开讲解:
1、数据属性:
每个基础控件(文本框,单据序列号,小数控件,整数控件,百分百控件,下拉列表,日期控件,复选框,地址控件等等)“别名”和“数据库字段”这两个必填的属性。
别名:必填,在Web端显示为控件标签;
数据库字段:必填,表示此控件在表单中存储的字段名;
是否必录:True则表示本字段必填,提交保存时如果此字段不填则不能保存,必填属性的标签后面会有红色星号(*);
多行输入:默认情况下文本框不能换行且不能设置其高度,但是设置“多行输入”属性为True后,文本框可以回车换行,可以设置高度;
最大字符数:表示文本框最多能输入多少字符(一个汉子,一个字母,一个数字,一个符号等等都算一个字符),超过允许的长度则不能保存,最长4000;
只读:表示文本框不能从界面上编辑,界面上显示为只读状态;
支持导入:表示在我们系统配套的导入工具中可导入这个字段;
触发器赋值:这个属性很有意思,True-表示这个字段不能通过客户端提交修改(新增时赋值),比如“单据序列号”只希望自动生成不能被修改,那么可以设置这个属性为True,则新增时自动编号后再不能被客户端修改;
记录修改日志:此字段请忽略;
2、校验需求:
比如用它来输入身份证号码、车牌号、车架号、手机号、邮箱等,需要能够校验输入的数据是否正确。
假设我们要用于输入身份证号码,需要校验输入的证件号码是否正确,需要设置“数据校验”属性,我们提供了身份证,VIN,手机号,车牌等9种标准校验功能,您也可以使用正则表达式进行校验。如下图所示,每一种校验如果不通过则表单不能保存。
3、安全存储:
比如用它来输入敏感信息如证件号码,联系电话,地址等,需要能够加密存储。
设置“加密存储”属性为True,则存储是会对输入信息进行AES加密。
加解密的AES Key可以自行在Web.config中指定(切记一经指定,如果有数据以后改动则以前的数据不能解密),如下图:
设置加密存储后,可以看到存储信息都是加密后的:
4、压缩存储:
有些情况下用它来输入几百几千字的长文本,需要能够压缩存储,那么设置“压缩存储”属性为True即可。设置后保存数据时自动对数据进行ZIP压缩存储。
5、唯一性需求:
比如我们希望系统中“客户表单”的“客户名称”不能重复,那么就可以设置“客户名称”字段的“唯一性验证”属性为True。
如果有多个字段都设置了唯一性验证为True会怎么样呢?
假设我们设置了“客户名称”和“身份证”两个字段的“唯一性验证”属性都为True,则保存的时候会同时校验这两个字段,假设系统中已经存在客户“张三”如下:
客户名称 | 证件号码 |
张三 | 999999999999999999 |
如果我们再次新增一个新客户“张三”,只要证件号码不等于上面已经存在的这个号码“999999999999999999”则就能够保存。
怎么知道单据上已经设置了哪些字段的“唯一性验证”属性为True了呢?如果一个个找显然很困难,可以在表单上右键然后点击弹出菜单项“查看唯一性验证控件”:
此时开发平台就会自动查找此表单哪些字段设置了“唯一性验证属性”为True,并如下图提示和选中这些控件:
6、OCR需求:
比如我们希望“身份证”号码的输入能够通过OCR识别证件,如下图所示:
则可以设置身份证号码字段的“证件识别”属性:
证件类型:目前支持4种类型的证件识别“身份证”、“营业执照”、“驾驶证”、“行驶证”,如下图:
识别Handler:目前默认识别对接的是阿里云上的证件识别服务,如果您需要其他的证件识别服务,则可以执行开发后台插件(具体插件Demo可以扫码加微由我们进行提供);
识别后执行:由于每一种证件类型识别后的返回JSON都不一样,所以这里通过识别后执行脚本(JS脚本)将识别结果解析后填写到不同的输入框中。比如身份证识别后会返回姓名,证件号码,出生日期等,所以我就可以通过脚本将其填入对应的输入框:
要使用目前默认的识别,您需要在阿里云上购买相应的产品,并在Web.config中配置好识别的appcode,url等等:
7、联动性需求:
比如输入身份证号码,需要能够自动计算出生日期和性别,则需要设置“内容改变”属性:
如果要计算出生日期,则输入E6脚本(当然您也可以使用JS脚本):SetValue("kehushengri",IDCardNo2Birthday(GetValue("shenfenzheng")));
由此可见,文本框虽然简单常用,但是需求非常多样化。
完结!