SelectItem中的setValueMap不会清除以前的项目

时间:2014-07-23 10:39:07

标签: gwt smartgwt

我的代码定义了两个SelectItem对象。在第一个选择选项时,第二个选项应更新其内容。获取数据后,我使用setValueMap方法设置新的LinedHashMap数据,但它不会清除以前的一些项目。将SmartGwt从v2.2升级到v4.0后会发生这种情况。这是这个版本的错误吗?你可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我测试了它并且它的工作非常好。我正在使用smartgwtpower-4.0p4。在这里,我将分享示例代码,以便在您的最后再次验证它。

示例代码:

DynamicForm dynamicForm = new DynamicForm();

final SelectItem item1 = new SelectItem();
LinkedHashMap<String, String> map1 = new LinkedHashMap<String, String>();
map1.put("animals", "animals");
map1.put("fruits", "fruits");
item1.setValueMap(map1);

final SelectItem item2 = new SelectItem();
item1.addChangedHandler(new com.smartgwt.client.widgets.form.fields.events.ChangedHandler() {

    @Override
    public void onChanged(com.smartgwt.client.widgets.form.fields.events.ChangedEvent event) {
        if (event.getValue().equals("animals")) {
            LinkedHashMap<String, String> map1 = new LinkedHashMap<String, String>();
            map1.put("dog", "dog");
            map1.put("cat", "cat");
            item2.setValueMap(map1);
        } else if (event.getValue().equals("fruits")) {
            LinkedHashMap<String, String> map1 = new LinkedHashMap<String, String>();
            map1.put("apple", "apple");
            map1.put("mango", "mango");
            item2.setValueMap(map1);
        }
    }
});
dynamicForm.setFields(item1, item2);