我有一个ComboBox,其中用户类型是从Web服务加载的值。如果没有找到值,我想将组合框重置为空值。固定2项而不使用webservice的示例:
ComboBox comboBox = new ComboBox();
comboBox.addItem("First item");
comboBox.addItem("Second item");
comboBox.setNullSelectionAllowed(true);
comboBox.setInputPrompt("Select an item:");
comboBox.select("First item");
当我尝试输入输入提示“第三”,然后点击离开以放松焦点时,“第一项”保持选中状态。
当我尝试通过手动调用comboBox.select(null)
或comboBox.select("")
甚至comboBox.setValue(null)
来覆盖此行为时,仍然会选中“第一项”。
这听起来像是一个comboBox错误,但也许有人知道一个解决方法。
答案 0 :(得分:3)
作为快速解决方案,您可以使用此代码。只需将空元素添加到组合框和模糊,或者您需要的操作,选择它。
final ComboBox comboBox = new ComboBox();
comboBox.addItem("");
comboBox.setNullSelectionItemId(comboBox.getItem(""));
comboBox.addItem("First item");
comboBox.addItem("Second item");
comboBox.setNullSelectionAllowed(true);
comboBox.setInputPrompt("Select an item:");
comboBox.select("First item");
comboBox.addListener(new BlurListener() {
@Override
public void blur(final BlurEvent event) {
comboBox.setValue("");
}
});
答案 1 :(得分:0)
在代码中添加以下行:
combobox.setImmediate(true);
这将显示所选值,而不是前一个值。
答案 2 :(得分:0)
由于6379
不适用于removeAllItems()
,您可以移除单个项目以获得相同的效果。
例如:
combobox
列出stateIDs =(List)state.getItemIds();
//get state combos ids