0

当您在 SmartGWT 中禁用 DynamicForm 时,表单中的所有项目都将被禁用并因此无响应。这是预期的正确行为。

问题是如果表单中有折叠的SectionItem,则在重新启用表单之前无法展开它们。当表单被禁用时,是否有一种简单的方法可以使部分交互?

4

1 回答 1

0

SectionItem 是 FormItem,其绘图由包含 DynamicForm 处理。
检查http://forums.smartclient.com/showthread.php?t=15008

在实现所需行为方面存在以下选项。
这些选项不会禁用表单的整个画布。

选项1:
使用以下方法代替form.setDisabled(true|false)as setFormDisabled(form, true|false);

private void setFormDisabled(DynamicForm form, boolean isDisabled) {
    FormItem[] fields = form.getFields();
    for (FormItem field : fields) {
        if (!(field instanceof SectionItem)) {
            field.setDisabled(isDisabled);
        }
    }
}

选项 2:
覆盖form.*Disabled()方法并用作form.setDisabled(true|false).

DynamicForm form = new DynamicForm() {
    private boolean isDisabled;

    @Override
    public boolean getDisabled() {
        return isDisabled;
    }

    @Override
    public void setDisabled(boolean disabled) {
        this.isDisabled = disabled;
        setFormDisabled(this, disabled);
    }
};

如果需要以不同的形式启用多种类型的项目,则可以使用泛型来增强这一点。

于 2013-08-15T08:37:45.680 回答