【问题标题】:How determine if a Vaadin table row clicked in has been selected or deselected?如何确定单击的 Vaadin 表行是否已被选中或取消选中?
【发布时间】:2015-07-24 21:46:48
【问题描述】:

在用户单击 Vaadin 7 表中的一行后,我怎么知道 如果该行已被选择或取消选择 - 单击选定的行取消选择该行 - (因为还有一列 需要保持同步的复选框)?

当我在 ItemClickListener 中尝试 table.getValue() 时,如果 如果取消选择该行,则选择行和项目 id - 即相反 我会期待什么?

table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
  @Override
  public void itemClick(ItemClickEvent event) {

    // how tell if row has been selected or deselected?
    Object idx = table.getValue();
  }
});

谢谢你, 史蒂夫

【问题讨论】:

    标签: vaadin vaadin7


    【解决方案1】:

    在 Table api 中,您可以使用 getValue() 方法,它会产生选定的行。

    根据是否处于多选模式,您可以推断会发生什么。

    【讨论】:

      【解决方案2】:

      使用Vaadin Grid 代替表格。它具有selectionListener 属性,可帮助您实现所需。

      Grid API

      【讨论】:

        【解决方案3】:

        (因为还有一列需要保留的复选框 同步)?

        使用Grid 和设置grid.setSelectionMode(SelectionMode.MULTI); 默认情况下,您将多出一列带有复选框。

        现在,如果你不想使用Grid

        对于Table,您应该使用vaadinTable.addValueChangeListener(...) 而不是ItemClickListener

        例如:

        table.addValueChangeListener(new ValueChangeListener() {
        
            @Override
            public void valueChange(ValueChangeEvent event) {
                //Set checkbox object as an itemId
                CheckBox itemId = (CheckBox)event.getProperty().getValue();
                //Manage Collection to add selected items
                if(table.isSelected(itemId)) {
                    table.select(itemId);
                    itemId.setValue(true);//Add this item to collection
                } else {
                   table.unselect(itemId); //Remove this item to collection
                   itemId.setValue(false);
                }
            }
        });
        

        另一种选择是,

        table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
          @Override
          public void itemClick(ItemClickEvent event) {
              //Manage collection and manually fetch property of table
              Object value = event.getItem().getItemProperty("property").getValue();
          }
        });
        

        【讨论】:

          猜你喜欢
          • 2010-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多