0

我正在使用 UploadItem、RadioGroupItem 和其他一些小部件。RadioButton 具有 onChangeHandler ,它将决定所有其他组件需要显示的内容。我已经使用 UploadItem 上传了一些文件。然后我更改了单选按钮选择。在更改单选按钮时,所需的小部件会正确显示,但我使用 UploadItem 选择的任何文件都会消失。Fresh UploadItem 小部件正在显示。换句话说,页面正在刷新。我的要求是每当我更改单选按钮选项时,所需的小部件应该与我使用 UploadItem 选择的任何文件一起显示应该保持不变。我的代码是这样的:

UploadItem upload = new UploadItem();
RadioGroupItem radioGroup = new RadioGroupItem();
HashMap map = new HashMap();
map.put("option1","option1");
map.put("option2","option2");
radioGroup.setValueMap(map);
TextItem textbox = new TextItem();
radioGroup.addChangeHandler(new ChangeHandler(){
          public void onChanged(ChangedEvent event) {  

                   String radioValue =((String)event.getValue());  
                  if(radioValue.equalsIgnoreCase("option2")){

                          textbox.show();

                  }else{
                            textbox.hide();
                  }
          }
});

使用 dynamicForm.setFields(all created widgets) 将所有创建的小部件添加到 DynamicForm 对象 更改单选按钮应隐藏并显示文本框。但是在执行此操作时,该页面正在刷新,并且我们使用 UploadItem 选择的任何文件都丢失了。

4

2 回答 2

2

根据 FormItem 类的hide()show()的文档,调用这些方法中的任何一个都将导致 DynamicForm 被重绘。

所以它可能会导致你遇到的问题。

为了克服这个问题,我建议您将 UploadItem 放在单独的 DynamicForm 中。

于 2013-06-05T10:50:32.863 回答
0

在无线电选择更改上触发事件

  radioButton.addListener(Events.Change, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            if(radioButton.getValue()){
                //fire an event here for ur widget
            }
        }
    });
于 2013-06-05T07:06:40.613 回答