Как условно изменить обязательный атрибут ListGridField в SmartGWT? - PullRequest
1 голос
/ 12 июля 2011

Я пытался добиться аналогичной функциональности в ListGrid, который уже существует для FormItems: com.smartgwt.client.widgets.form.validator.RequiredIfValidator .

Я хочу установитьстолбец требуется на основе значения другого столбца.То есть.мы получили ListGridFields A = "Нужно больше кофе? Если нет, то почему?"и B за ответ на вопрос.B не требуется, пока A не имеет определенного значения.

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 и заставил валидатор срабатывать, но он не меняет обязательный атрибут поля, независимо от того, что получаетвозвращается из метода execute () RequiredIfFunction.

Есть ли изящный способ справиться с этим?

1 Ответ

1 голос
/ 28 ноября 2012

Хотя это имеет смысл, другой ответ на этот вопрос, эквивалентный 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);

Надеюсь, что это не поможет!

...