0

我在使用 SmartGWT 2.4 时遇到了以下问题:

  • 我们有一个 DynamicForm 显示几个静态文本字段(因此表单处于只读模式)。表单在后台使用数据源和我们自己的FormItemFactory根据我们的元数据创建适当的表单项。一些表单项包含显示为字符串的布尔值:如'isHidden': false'canShow': true
  • 通过用户操作(按钮单击),我们需要将表单切换到编辑模式。

我们通过以下方式进行:

  • 我们首先收集表单值作为rec = form.getValuesAsRecord()获取记录对象
  • 然后我们创建一个新的动态表单并将其设置为与原始数据源相同的数据源
  • 然后我们调用newForm.editRecord(rec)新创建的动态表单的方法

这样,表单静态值显示为可编辑的输入字段。然而,问题在于这些布尔值。它们被正确地转换为复选框,但默认情况下它们都被选中。

我认为字符串值 'false' 或 'true' 不会被解析为布尔值并设置为相应复选框项的值。

我能以某种方式影响这个过程吗?我试图为 CheckboxItem 提供 FormItemValueParser 的匿名实现,但结果证明它仅由自由文本表单项使用。

我会非常感谢任何给定的提示。

4

1 回答 1

0

尝试使用 record.getAttributeAsBoolean("formItemName") 将值显式设置为 formItem

BooleanItem boolItem = new BooleanItem("boolname");
DynamicForm form = new DynamicForm();
form.setItems(boolItem);

//Get record
Record rec = form.getValuesAsRecord();
boolItem.setValue("boolname",rec.getAttributeAsBoolean("boolname"));
于 2011-06-09T10:13:41.993 回答