首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vaadin表行内联编辑

Vaadin表行内联编辑
EN

Stack Overflow用户
提问于 2013-04-22 16:07:31
回答 3查看 8.4K关注 0票数 4

我在vaadin中创建了一个表,表中的每一行都有一个编辑按钮。

代码语言:javascript
运行
复制
table.setEditable(true) 

但这使得整个表都是可编辑的。当我点击编辑按钮时,我只希望选中的行是可编辑的,如果可能的话,一些单元格是自定义的,例如复选框,下拉框等。有什么建议吗?

EN

Stack Overflow用户

回答已采纳

发布于 2014-10-31 20:34:13

下面是一个非常简单的例子:

代码语言:javascript
运行
复制
final Table table = new Table();
table.setEditable(true);
table.setTableFieldFactory(new TableFieldFactory() {
    private static final long serialVersionUID = 1L;

    @Override
    public Field<?> createField(Container container, Object itemId, Object propertyId, Component uiContext) {
        if (itemId == table.getData()) {
            return DefaultFieldFactory.get().createField(container, itemId, propertyId, uiContext);
        }
        return null;
    }
});
table.addGeneratedColumn("", new ColumnGenerator() {
    private static final long serialVersionUID = 1L;

    @Override
    public Object generateCell(Table source, final Object itemId, Object columnId) {
        Button button = new Button(itemId == table.getData() ? "Save" : "Edit");
        button.addClickListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                if (table.getData() == null) {
                    // edit
                    table.setData(itemId);
                    table.refreshRowCache();
                } else if (itemId == table.getData()) {
                    // save
                    table.setData(null);
                    // ...
                    table.refreshRowCache();
                }
            }
        });
        return button;
    }
});
// ...
票数 7
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16142212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档