SmartGWT 动态表单编辑带有布尔值的记录
我使用 SmartGWT 2.4 时遇到以下问题:
- 我们有一个 DynamicForm 显示几个静态文本字段(因此表单处于只读模式)。该表单在后台使用数据源和我们自己的 FormItemFactory 来根据我们的元数据创建适当的表单项。某些表单项包含显示为字符串的布尔值:例如 'isHidden': false 或 'canShow': true。
- 通过用户操作(单击按钮),我们需要将表单切换到编辑模式。
我们通过以下方式做到这一点:
- 我们首先将表单值收集为
rec = form.getValuesAsRecord()
获取 Record 对象 - ,然后创建一个新的动态表单并为其设置与原始表单相同的数据
- 源我们调用新创建的动态表单的 newForm.editRecord(rec) 方法
,这样表单静态值将显示为可编辑输入字段。 但是问题出在这些布尔值上。它们被正确地转换为复选框,但默认情况下都会选中它们。
我认为字符串值“false”或“true”不会解析为布尔值并设置为相应复选框项的值。
我可以以某种方式影响这个过程吗?我尝试向 CheckboxItem 提供 FormItemValueParser 的匿名实现,但事实证明它只能由自由文本表单项使用。
我将非常感谢任何给定的提示。
I've got following problem using SmartGWT 2.4:
- we are having a DynamicForm showing several static text fields (so the form is in readonly mode). The form uses a datasource in the background and our own FormItemFactory to create proper form items based on our meta data. Some of the form items contain boolean values displayed as strings: like 'isHidden': false or 'canShow': true.
- by user action (button click) we need to switch the form to edit mode.
We do it in following way:
- we first gather the form values as
rec = form.getValuesAsRecord()
getting a Record object - then we create a new dynamic form and set into it the same datasource as original has
- then we call the
newForm.editRecord(rec)
method of newly created dynamic form
This way the form static values are shown as editable input fields. However the problem is with those boolean values. They are correctly transformed into check boxes but all of them are checked by default.
I think that the string values 'false' or 'true' are not parsed into boolean values and set as value for respective check box item.
Can I somehow influence this process? I tried to provide an anonymous implementation of FormItemValueParser to CheckboxItem but it turns out to be use only by free text form items.
I'll be really thankful for any given hint.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用 record.getAttributeAsBoolean("formItemName") 将值显式设置为 formItem
Try setting the value explicitly to the formItem with record.getAttributeAsBoolean("formItemName")