从vaadin中的组合框列表中获取数据

时间:2014-10-28 09:44:33

标签: sql-server-2008 vaadin

请更正此代码;

我有一个组合框,它是在Vaadin框架中开发并连接到SQL Server。它有3个静态值5,3,1年,请帮助我添加这三个选项的监听器并告诉我如何选择一个值(Ex = 5年),它应该显示过去5年的所有值喜欢明智的3年零1年,请帮助我。

comboDateOrigine.addListener(new Property.ValueChangeListener() {

            public void valueChange(ValueChangeEvent event) 
            {
               if (event.getProperty().getValue() != null) 
               {

                    if(event.getProperty().getValue().toString() == "5 Ans"){
                        comboDateOrigine.select(ListOptions.get(0));
                      SELECT DateOrigine from WebProject
                      where DateOrigine = (Current date - (5years ) )

                    }
                    else if(comboDateOrigine.getValue().toString() == "3 years"){
                         comboDateOrigine.select(ListOptions.get(1));
                         SELECT DateOrigine from WebProject
                      where DateOrigine = (Current date - (3 years ) )

                    }
                    else if(comboDateOrigine.getValue().toString() == "1 year"){
                        comboDateOrigine.select(ListOptions.get(2));
                         SELECT DateOrigine from WebProject
                      where DateOrigine = (Current date - (1years ) )

                    }
                }
                else{
                    // Reset the ComboBox
                    comboDateOrigine.setValue(null);
                }
            }
        });
    comboDateOrigine.setImmediate(true);

1 个答案:

答案 0 :(得分:0)

首先我建议使用

comboDateOrigine.addValueChangeListener(new ValueChangeListener() {
    @Override
    public void valueChange(ValueChangeEvent event) {
        //...
    }
);

然后要获取所选值,我不知道这个组合是如何制作的(自定义项目,项目来自数据库等)但是

comboDateOrigine.getValue();

给出用作" id"的属性值。如果你的组合框使用"复杂的"项目也许你可以获得更好的属性来进行查询,比如

Item selectedItem = comboDateOrigine.getContainerDataSource().getItem(comboDateOrigine.getValue());
Integer year = (Integer)selectedItem.getItemProperty("year").getValue();

有关操纵日期的参考资料,请参阅此片段

Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, 1);
c.getTime(); //-> gives the date+1 back

关于实际查询,请查看PreparedStatement类&合。 这应该是一个很好的起点。