本文描述了一个需求,即在单据上根据选择的职业类型(军人、教师、学生或其他)动态显示或隐藏一个文本框,并设置该文本框的必录属性。文章首先阐述了需求背景和实现思路,指出需通过插件而非界面规则来控制字段的必录状态。接着,详细说明了实现过程,包括构造测试单据页面、编写插件代码,并展示了选择不同职业时文本框的显示与必录状态变化。最后,文章还提供了开发环境版本、注意事项和参考资料。
关键词:必录、可见
一、需求
现有一需求,要在单据上填写职业信息,职业信息这个字段是个下拉选框,里面举例说有军人,教师,学生,还有一个其他职业,当选择 其他职业时,在下拉框后面会有一个新的文本框显示出来,而且是必录的,让填单人填写其他具体的职业。而填单人在选择了军人,教师,学生这三种之一的,这个文本框就隐藏起来了。
二、思路与方案
这种看似可以用界面规则来实现,但是你会发现,字段的必录和非必录是没办法界面规则来控制的,所以这里还是需要通过插件来实现。
三、实现过程
1 构造测试单据页面
这个页面也是比较简单,添加一个下拉列表,里面配置好多个职业的值,记住一定要勾选即时触发值更新。再添加一个文本字段,这样即可。
2 编写插件代码
@Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String propertyName = e.getProperty().getName();// 获取值改变的属性名称 ChangeData cd = e.getChangeSet()[0]; if (StringUtils.equals("bidt_job", propertyName)) { String newWord = (String) cd.getNewValue();// 获取属性更改的新值 if ("others".equals(newWord)) { this.getView().setVisible(true, "bidt_job_desc");// 设置可见 TextEdit edit = this.getView().getControl("bidt_job_desc"); edit.setMustInput(true);// 设置必录 } else { this.getView().setVisible(false, "bidt_job_desc");// 设置不可见 TextEdit edit = this.getView().getControl("bidt_job_desc"); edit.setMustInput(false);// 设置非必录 } } }
四、效果图
这是选择教师的页面,具体职业的字段就隐藏出来了,且在填写其他字段提交后,发现具体职业为空是不做校验的。
这是选择了其他时,具体职业的字段就显示出来了,且是必填的,此时我们填写其他字段提交后,发现具体职业为空,校验是不通过的。
五、开发环境版本
COSMICV4.0.003.0
六、注意事项
1 下拉列表一定要勾选即时触发值更新,否则你选择好了是不会触发的
2 必录分为控件必录和字段必录,在这里要一起设置的。
七、参考资料
推荐阅读