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