单选按钮更改处理程序刷新页面

时间:2013-06-05 05:49:18

标签: gwt smartgwt

我正在使用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(所有创建的小部件)将所有创建的小部件添加到DynamicForm对象 更改单选按钮应隐藏并显示textBox。但是,当这个页面正在刷新时,我们使用UploadItem选择的任何文件都会丢失。

2 个答案:

答案 0 :(得分:2)

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

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

为了解决这个问题,我建议你将UploadItem放在一个单独的DynamicForm中。

答案 1 :(得分:0)

在广播中点击一个事件选择更改为

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

        @Override
        public void handleEvent(BaseEvent be) {
            if(radioButton.getValue()){
                //fire an event here for ur widget
            }
        }
    });