gpt4 book ai didi

java - 当数据源是 SQLContainer 时如何使只有一列可编辑

转载 作者:行者123 更新时间:2023-11-30 08:36:17 25 4
gpt4 key购买 nike

    TableQuery tq1 = new TableQuery("employee", connectionPool);
tq1.setVersionColumn("VERSION");
employeeContainer = new SQLContainer(tq1);
employeeTable = new Table();
employeeTable.setContainerDataSource(employeeContainer);
employeeTable.setVisibleColumns(new Object[]{
"firstname", "lastname", "address"});
employeeTable.setSelectable(true);
employeeTable.setImmediate(true);

在那个例子中,我使用的是来自 Vaadin 的 SQLContainer-Addon。通过使用以下代码,我可以将所有单元格设置为可编辑。

employeeTable.setEditable(true);

但我只想让一列可编辑。假设地址应该是唯一可以编辑的列。

最佳答案

还没有真正使用它来使列可编辑,但我想您可以使用自定义 ColumnGenerator 以在其他情况下无法编辑的表格中返回 TextField。如果您将 TextField 的模型链接到底层容器,您甚至可以让它们在两个方向上相互更新。 (以下代码未经测试)

myTable.addGeneratedColumn("address", new Table.ColumnGenerator() {
public Component generateCell(Table table, Object itemId, Object columnId) {
BeanItem<MyBean> item = myContainer.getItem(itemId);
Property<String> address = item.getItemProperty("address");
TextField tf = new TextField();
tf.setPropertyDataSource(address);
return tf;
}
}

注意:虽然这可能会更新容器模型,但我不确定这是否会有效地将更改提交到数据库,因为我不熟悉 SQLContainer。

关于java - 当数据源是 SQLContainer 时如何使只有一列可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37856060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com