При выборе элемента со списком GWT отображается значение, а не текст

#java #gwt #combobox #editor #gxt

#java #gwt #со списком #редактор #gxt

Вопрос:

Используя Java и GWT, у меня есть contentGrid с пользовательским определением столбца и хранилищем контента.

В одном из столбцов таблицы должно отображаться поле со списком с несколькими параметрами. Поле со списком и его содержимое определены как таковые:

 ComboBox comboBox = new ComboBox();
SimpleStore comboBoxStore = new SimpleStore( new String[]{"text","id"}, new String[][] { new String[] {"John", "Mike"} , new String[] {"1","2"} } );
comboBoxStore.load();
comboBox.setDisplayField( "text" );
comboBox.setValueField("id" );
comboBox.setStore( comboBoxStore );
comboBox.setForceSelection( true );
comboBox.setEditable( false );

nameColumnConfig.setEditor(new GridEditor( comboBox ));
  

Затем сетка отображается правильно, при двойном щелчке nameColumnConfig отображается поле со списком с правильными элементами «John» и «Mike».

Но когда я нажимаю на один из этих параметров и щелкаю по сетке, чтобы она «обновилась» сама, в выпадающем списке отображается идентификатор выбранного параметра, а не его displayField.

Я некоторое время искал решение, и я не нашел ничего, что могло бы удаленно сообщить мне, как это решить или в чем причина.

Я был бы очень признателен за любую помощь или понимание в этой проблеме.

Спасибо.

Комментарии:

1. Я опасался, что этот вопрос, возможно, был слишком конкретным. Я искал, и у некоторых людей были похожие проблемы, но с использованием gtw-ext в javascript. Их решения, похоже, не применимы к проекту на основе Java. Я все еще сталкиваюсь с этой проблемой…

2. Я нашел тему на форуме extjs sencha.com/forum /… . Сообщается об ошибке, из-за которой фильтр хранилища не очищается. Не уверен, что это проблема в gwt framework, но я пока что разберусь в этом.

Ответ №1:

Вместо того, чтобы указывать вот так—

 comboBox.setDisplayField( "text" ); 
comboBox.setValueField("id" ); 
  

Вы должны сделать что-то вроде

 comboBox.setDisplayField( "text" ); 
comboBox.setValueField("text" ); 
  

конечно, вы получите ответ.