(groovy)如何隐藏表单上的所有字段,只显示一个字段?

时间:2015-11-22 09:01:12

标签: forms groovy scripting custom-fields

所以,这就是问题所在。我在一个在线Workflow平台上使用Groovy编写脚本。我有9个包含自定义字段的表单。我有编辑操作,其中我根据产品类型显示/隐藏表单。 现在,我有共同的领域,我应该根据产品的类型显示/隐藏它们。 例如:我有一个自定义字段"货币代价",它在2号表格上。如果产品在A轨道中,那也没关系。如果产品在轨道B中,则应在第5号表格中显示。现在,问题是,软件不允许复制字段,移动后,moveBefore。所以,我隐藏了所有表格,除了表格号码。 5,但如何只显示一个自定义字段(货币为成本)。 2,无需在代码中隐藏其余部分?

else if (step_to_editValue == 'costing') {
form.getWidget('customer_contact_information').hide();
form.getWidget('CAR').hide();
form.getWidget('product_questionnaire').hide();
form.getWidget('costing').show();
form.getWidget('complexity_review').hide();
form.getWidget('design_definition').hide();
form.getWidget('cost_estimation').hide();
form.getWidget('design_and_costing').hide();
form.getWidget('send_quote_to_customer').hide();
form.getWidget('check_quotation_status').hide();
form.getWidget('multi_pricing_screen1').hide();
form.getField('production_site').show();
}

所以," production_site"正在进行复杂度查看'形式,但我想展示“成本计算”。表格+来自复杂性查看'的一个字段。如果我做      form.getWidget(' complexity_review&#39)。显示(); 然后我需要隐藏所有字段,除了一个。还有另外一种方法,只显示一个字段吗?

1 个答案:

答案 0 :(得分:1)

添加辅助功能:

void soloWidget(List<String> widgetNames, String showOnly) {
    widgetNames.each{ form.getWidget(it).hide() }
    form.getWidget(showOnly).show()
}

保留表单列表并调用该fn而不是复制和粘贴:

def forms = ['customer_contact_information', 'CAR', ...]
// ...
soloWidget(forms, 'costing')

如果您的引擎存在视觉伪影,同时积极地隐藏所有并再次显示,则添加(show|hide)Widget函数,处理该函数并在showForm中使用它(例如,询问小部件,是否已经隐藏,不要再隐藏了。)

重要的部分:DRY!如果您有复制和粘贴代码块的冲动,请不要!