如何在SmartGWT中有条件地更改ListGridField的必需属性?

时间:2011-07-12 15:02:30

标签: gwt smartgwt

我一直在尝试在已经存在的FormItems的ListGrid上实现类似的功能:com.smartgwt.client.widgets.form.validator.RequiredIfValidator

我想根据另一列的值设置所需的列。 IE浏览器。我们得到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使用相同的验证器并启动验证器,但无论从RequiredIfFunction的execute()方法返回什么,它都不会更改字段的必需属性。

有没有一种巧妙的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

虽然这是有意义的,但这个问题的另一个答案,相当于我的示例代码中的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);

希望不会有帮助!

相关问题