Критерии для отображения значения в TextItem - PullRequest
0 голосов
/ 15 июня 2011

Когда я выбираю значение из выпадающего списка, другой текстовый элемент должен быть обновлен.Ниже приведен код для этого:

SelectItem  courseItem = new SelectItem ("course.id", "Course");
courseItem.setOptionDataSource(CoursesDS.getInstance());

courseItem.setDisplayField("course.title");
courseItem.addChangeHandler(new ChangeHandler() {

            @Override
            public void onChange(ChangeEvent event) {
                c.addCriteria("course.id", (Integer)event.getValue());
                CourseDS.getInstance().fetchData(c);
            }
        });

TextItem courseNameItem = new TextItem("course.title", "Course Name");
courseNameItem.setShowDisabled(false);

Если я передаю идентификатор курса, используя критерии из selectitem, тогда название курса должно автоматически отображаться в textitem, но оно не отображается.

, пожалуйста, подскажите, где я ошибаюсь?

1 Ответ

0 голосов
/ 17 июня 2011

Вам не нужно пропускать идентификатор курса и делать выборку снова. Вместо этого в изменившемся элементе courseSelectItem используется метод getSelectedRecord. При каждом изменении элемента select метод getSelectedRecord будет иметь соответствующую запись курса. получить название курса и установить его в текстовом элементе

        final TextItem courseNameItem = new TextItem("course.title", "Course Name");
        courseNameItem.setShowDisabled(false);

        SelectItem courseItem = new SelectItem ("course.id", "Course");
        courseItem.setOptionDataSource(CoursesDS.getInstance());
        courseItem.setDisplayField("course.title");

        //Use changed handler
        courseItem.addChangedHandler(new ChangedHandler() {

                @Override
                public void onChanged(ChangedEvent event) {
courseNameItem.setValue(courseItem.getSelectedRecord().getAttributeAsString("course.title"));
                }
            });
...