2011-06-15 59 views
0

当我从下拉列表中选择值时,应该更新其他文本项。 下面是代码为:显示文本项值的标准

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); 

如果我通过使用标准的选择信息,然后课程名称会自动显示在textitem但它不显示进程ID。

请指出我错在哪里?

回答

0

您不必传递课程ID并再次执行读取。而不是在courseSelectItem的changedHandler中使用getSelectedRecord方法。每当选择项目被更改时,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")); 
       } 
      });