Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何有条件地更改ListGridField';SmartGWT中的必需属性是什么?_Gwt_Smartgwt - Fatal编程技术网

如何有条件地更改ListGridField';SmartGWT中的必需属性是什么?

如何有条件地更改ListGridField';SmartGWT中的必需属性是什么?,gwt,smartgwt,Gwt,Smartgwt,我一直在尝试在ListGrid上实现类似的功能,该功能已经存在于FormItems: 我想根据另一列的值设置所需的列。 例如,我们得到ListGridFields A=“需要更多咖啡吗?如果不需要,为什么?”和B来回答问题。在A具有特定值之前,不需要B ListGrid grid = new ListGrid(); // Boolean ListGridField questionA = new ListGridField("questionA", "Need more coffee?"); q

我一直在尝试在ListGrid上实现类似的功能,该功能已经存在于FormItems:

我想根据另一列的值设置所需的列。 例如,我们得到ListGridFields A=“需要更多咖啡吗?如果不需要,为什么?”和B来回答问题。在A具有特定值之前,不需要B

ListGrid grid = new ListGrid();
// Boolean
ListGridField questionA = new ListGridField("questionA", "Need more coffee?");
questionA.setRequired(true);
// String
ListGridField reason = new ListGridField("reason", "Reason");
reason.setRequired(false); // should become true when A is not checked.
grid.setFields(questionA, reason);
我尝试对ListGridField使用相同的验证器,并启动了验证器,但它不会更改字段的required属性,无论RequiredInffunction的execute()方法返回什么


有没有一种简洁的方法来处理这个问题?

尽管这很有意义,但这个问题的另一个答案,相当于我的示例代码中的myConditionalValidatedField.setRequired(myCheckBox.getValueAsBoolean()),对我来说并不适用。我通过以下操作修复了该问题:

    RequiredIfValidator validator = new RequiredIfValidator();
    validator.setExpression(new RequiredIfFunction() {
        @Override
        public boolean execute(FormItem formItem, Object value) {
            return myCheckBox.getValueAsBoolean();
        }
    });
    validator.setErrorMessage("Required field if 'myCheckBox' is checked");
    myConditionalValidatedField.setValidators(validator);

希望有帮助

尽管这个问题的另一个答案很有意义,但在我的示例代码中,它相当于myConditionalValidatedField.setRequired(myCheckBox.getValueAsBoolean())对我来说并不适用。我通过以下操作修复了该问题:

    RequiredIfValidator validator = new RequiredIfValidator();
    validator.setExpression(new RequiredIfFunction() {
        @Override
        public boolean execute(FormItem formItem, Object value) {
            return myCheckBox.getValueAsBoolean();
        }
    });
    validator.setErrorMessage("Required field if 'myCheckBox' is checked");
    myConditionalValidatedField.setValidators(validator);
希望有帮助