我对使用Spring + GWT预先选择(setSelectedIndex(index)
)ListBox中的项目表示怀疑。
我有一个包含面板的对话框,这个面板有一个FlexPanel,我在其中放了几个ListBox,这些数据填充了我的数据库。
但是这个Panel用于更新我的数据库中的实体,因此我希望它预先选择此项目的当前属性,允许用户随意更改。
我在窗口小部件的更新方法中填写。
我尝试在update方法中设置selectedItem,但它给出了一个空错误。
我搜索了几个地方,似乎ListBox只在显示的确切时刻填充。因此,预先选择是不可能的。
我想到了一些事件,在显示页面时会触发。
onLoad()无效..
任何人都有东西可以帮助我在这里吗?
答案 0 :(得分:3)
我真的认为可以在选择附加和显示之前设置选择,但您必须先添加数据才能选择索引。如果这是一个单选框,你可以这样写:
void updateListContent(MyDataObject selected, List<MyDataObject> list){
for (MyDataObject anObject : list) {
theListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList());
}
theListBox.setSelectedIndex(list.indexOf(selected));
}
如果这是一个多选框,这样的东西可能会起作用:
void updateListContent(List<MyDataObject> allSelected, List<MyDataObject> list){
for (MyDataObject anObject : list) {
theMultipleListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList());
}
for (MyDataObject selected : allSelected) {
theMultipleListBox.setItemSelected(list.indexOf(selected), true);
}
}
(注意我实际上没有编译过这个,所以可能存在拼写错误。这假设选定的元素确实存在于可能的值列表中,所以如果你不能确定这一点你会需要添加一些边界检查。)
答案 1 :(得分:0)
我很乐意在附件之前设置值和选择索引,因为据我所知它应该有效。但是,在IE上将所选索引设置为-1时会出现错误,请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=2689。
答案 2 :(得分:0)
预选也适用于setValue() - 函数。因此,不需要复杂的代码。
答案 3 :(得分:0)
private void setSelectedValue(ListBox lBox, String str) {
String text = str;
int indexToFind = -1;
for (int i = 0; i < lBox.getItemCount(); i++) {
if (lBox.getValue(i).equals(text)) {
indexToFind = i;
break;
}
}
lBox.setSelectedIndex(indexToFind);
}