SmartGWT で DynamicForm を無効にすると、フォーム内のすべての項目が無効になり、応答しなくなります。これは予期された正しい動作です。
問題は、フォームに折りたたまれたSectionItemがある場合、フォームを再度有効にする前にそれらを展開できないことです。フォームが無効になっているときにセクションをインタラクティブにする簡単な方法はありますか?
SmartGWT で DynamicForm を無効にすると、フォーム内のすべての項目が無効になり、応答しなくなります。これは予期された正しい動作です。
問題は、フォームに折りたたまれたSectionItemがある場合、フォームを再度有効にする前にそれらを展開できないことです。フォームが無効になっているときにセクションをインタラクティブにする簡単な方法はありますか?
SectionItem は、その描画が含まれる DynamicForm によって処理される FormItem です。http://forums.smartclient.com/showthread.php?t=15008
を
確認してください。
必要な動作を実現するには、次のオプションがあります。
これらのオプションは、フォームのキャンバス全体を無効にするわけではありません。
オプション 1: as
の代わりに次のメソッドを使用します。form.setDisabled(true|false)
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:メソッドを
オーバーライドして as として使用します。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);
}
};
複数のタイプのアイテムを異なるフォームで有効にしておく必要がある場合、ジェネリックを使用してこれを強化できます。