1

我正在使用两个表,第一个包含“团队”,第二个包含“团队成员”,并且基于第一个表选择进行填充。我还会根据选择显示各种统计数据,无论是团队还是特定成员。如果没有选择任何成员,则显示团队统计信息,否则显示成员统计信息。

我在表格上使用 ItemChangeListeners 来重绘统计信息,但这会阻止我单击已选择的团队以从该团队中“取消选择”选定的成员,因为在这种情况下不会触发任何事件。作为一种解决方案,我还在 Team 表上使用了 ClickListener,但它似乎只有在我单击单词时才有效(而不是在整个单元格上工作)

teamsTable.setClickListener("name", new Table.CellClickListener() {
        @Override
        public void onClick(Entity item, String columnId) {
            if (teamsDs.getItem() == item) {
                teamsDs.setItem(null);
                teamsDs.setItem((Team) item);
            } else {
                teamsDs.setItem((Team) item);
                teamsTable.setSelected((Team) item);
            }
        }
    });

有没有更好的方法来捕捉对表格单元格的点击?或者有没有更好的方法来完全解决这个问题?

4

1 回答 1

3

由于 CUBA Table 是 Vaadin 表的包装器,因此您可以将 Vaadin 的 ItemClickListener 与 CUBA 表一起使用:

public class DemoScreen extends AbstractWindow {
    @Inject
    private Table<User> usersTable;

    @Override
    public void init(Map<String, Object> params) {
        super.init(params);

        com.vaadin.ui.Table vTable = usersTable.unwrap(com.vaadin.ui.Table.class);
        vTable.addItemClickListener((ItemClickEvent.ItemClickListener) event ->
                showNotification("Item " + event.getItemId())
        );
    }
}

每次单击表格单元格时都会触发它。

于 2016-12-08T14:34:59.903 回答