#java #gwt #extjs #combobox #gxt
#java #gwt #extjs #поле со списком #gxt
Вопрос:
У меня есть SimpleComboBox в графическом интерфейсе, который также содержит некоторые повторяющиеся элементы. Предположим, что есть 3 элемента, которые совпадают с «доменом». Когда я выбираю второй «домен» или третий «домен», выбранный элемент и выбранный индекс всегда указывают на первое появление «домена». Как я могу исправить, чтобы выбранный индекс / элемент был правильным, а не первым появлением элемента?
Поле со списком с повторяющимися значениями:
Когда я выбираю «домен» в четвертом появлении, он всегда будет указывать на первое появление «домена».
Вывод:
Когда я выбираю «192.168.1.30» в последнем случае, это укажет на первое появление «192.168.1.30».
Пожалуйста, кто-нибудь мне поможет.
private SimpleComboBox<String> domainName = new SimpleComboBox<String>();
domainName = WidgetUtil.getStringCombo("Domain Name", 12, true, domainNameList, null);
domainName.addSelectionChangedListener(getReportSelectionListener());
domainName.setForceSelection(true);
domainName.setTriggerAction(TriggerAction.ALL);
private Button New, add, remove;
New = WidgetUtil.getButton("New", "new", "");
New.addSelectionListener(buttonAction());
thirdLayoutContainer.add(New);
add = WidgetUtil.getButton("Add", "add", "");
add.addSelectionListener(buttonAction());
add.setStyleAttribute("paddingTop", "10px");
thirdLayoutContainer.add(add, formData);
remove = WidgetUtil.getButton("Remove", "remove", "");
remove.addSelectionListener(buttonAction());
public void componentSelected(ButtonEvent ce){
String domain_name = null;
if (ce.getComponent().getId().equals("remove")){
System.err.println("Clicked remove button...");
domain_name = domainName.getRawValue();
domainNameList.remove(domain_name);
systemDetailsMap.remove(domain_name);
systemDetailsMap.remove(domain_name "_USER_NAME");
systemDetailsMap.remove(domain_name "_HOST_NAME");
systemDetailsMap.remove(domain_name "_PASSWORD");
domainName.removeAll();
domainName.add(domainNameList);
userName.clear();
hostName.clear();
password.clear();
System.err.println("After remove domain name list ---> " domainNameList);
System.err.println("After remove map ---> " systemDetailsMap);
} else if (ce.getComponent().getId().equals("add")) {
System.err.println("Clicked add button...");
domain_name = domainName.getRawValue();
domainNameList.add(domain_name);
systemDetailsMap.put(domain_name, domain_name);
systemDetailsMap.put(domain_name "_HOST_NAME", hostName.getValue());
systemDetailsMap.put(domain_name "_USER_NAME", userName.getValue());
systemDetailsMap.put(domain_name "_PASSWORD", password.getValue());
// domainName.clear();
domainName.add(domainNameList);
// domainName.reset();
System.err.println("After add domain name list ---> " domainNameList);
System.err.println("After add map ---> " systemDetailsMap);
} else if (ce.getComponent().getId().equals("new")) {
System.err.println("Clicked new button...");
userName.clear();
hostName.clear();
password.clear();
domainName.removeAllListeners();
domainName.removeAll();
domainName.clear();
domainName.setEmptyText("Add a new domain");
userName.setEmptyText("Add a new username");
hostName.setEmptyText("Add a new hostname");
password.setEmptyText("Add a new password");
domainName.addSelectionChangedListener(getReportSelectionListener());
}
}
};
private SelectionChangedListener<SimpleComboValue<String>> getReportSelectionListener(){
SelectionChangedListener<SimpleComboValue<String>> ReportListener = new SelectionChangedListener<SimpleComboValue<String>>() {
@Override
public void selectionChanged(SelectionChangedEvent<SimpleComboValue<String>> se) {
SimpleComboValue<String> selectedValue = se.getSelectedItem();
String value = selectedValue.getValue();
System.err.println("Selected Value ---> " selectedValue.getValue());
if (value != null amp;amp; !value.equals("---New---") ){
userName.clear();
hostName.clear();
password.clear();
userName.setValue(systemDetailsMap.get(value "_USER_NAME").toString());
hostName.setValue(systemDetailsMap.get(value "_HOST_NAME").toString());
password.setValue(systemDetailsMap.get(value "_PASSWORD").toString());
}
}
};
return ReportListener;
}
Пожалуйста, помогите мне. Заранее спасибо.
Ответ №1:
Я не использую Ext-gwt, только стандартный ext-js, но я думаю, что знаю, что вам нужно! Вы должны определить поле отображения и значения.
Ext.create('Ext.form.ComboBox', {
store: xyz,
queryMode: 'local',
displayField: 'name',
valueField: 'id',
renderTo: Ext.getBody()
});
Вам просто нужно убедиться, что дублирующиеся элементы получают уникальный идентификатор. Я думаю, что если это возможно в ext-js, это также должно быть возможно в ext-gwt!