5

我有一个表阶段,其中包含引用存储库表的值。在存储库中,每个值都有一个订单号。

通常在 SQL 中,我会加入它们,然后按 order 列排序。但是,如果我想在 Vaadin 中执行此操作,我必须使用FreeFormQuery来进行此连接。

问题是我希望允许用户更改表阶段中的值。所以我需要实施FreeFormQueryDelegate. 有没有办法通过使用标准TableQuery而不是标准来完成这项工作FreeFormQuery

也许手动移动表中的行?

4

2 回答 2

15

Vaadin 为表格提供了一些排序选项。

您可以对一个特定的 propertyId 进行排序,也可以对一组属性进行排序。

// sort one container property Id
table.setSortContainerPropertyId(propertyId);
table.setSortAscending(ascending);
table.sort();

// sort several property Ids
table.sort(propertyId[], ascending[]);

注意:上面的代码不是正确的代码,而是显示方法体。

于 2012-11-02T20:49:15.163 回答
0

我使用以下代码重新排列 vaadin 表格行,当单击“上移”按钮时,同时选择表格行。

Object selectedItemId = fieldTable.getValue();
        if(selectedItemId != null){
            List<Object> items = new ArrayList<>(fieldTable.getItemIds());
            int index = items.indexOf(selectedItemId);

            if(index < 1){
                LOGGER.info("Selected Filed is at the top, cannot move up further");
                return;
            }

            //Rearrange itemids for new order
            Object upperRow= items.set(index - 1, selectedItemId);
            items.set(index, upperRow);

            items.forEach(itemId -> {
                //Gets the properties of old table item
                Item item = fieldTable.getItem(itemId);
                String name = (String) item.getItemProperty(Constants.PROPERTYID_FIELD_NAME).getValue();
                Button toggleBtn = (Button) item.getItemProperty(Constants.PROPERTYID_SORT_BUTTON).getValue();

                //Remove the old table item
                fieldTable.removeItem(itemId);

                //Insert old table item into the new position index
                Item newItem = fieldTable.addItem(itemId);
                newItem.getItemProperty(Constants.PROPERTYID_FIELD_NAME).setValue(name);
                newItem.getItemProperty(Constants.PROPERTYID_SORT_BUTTON).setValue(toggleBtn);

                int position = items.indexOf(itemId);
                if(position == index - 1) {
                    fieldTable.select(itemId);
                }
            });
        }
于 2015-08-03T04:48:22.650 回答