执行了这个代码之后数据库的数据没变啊,每次数据编辑的时候下拉选择对应的方法onStationDcItemChange()会被调用
使用 addLine 的时候,需要给 testConentTable 的 DC 添加一条记录。然后在行内编辑结束、或者整个编辑结束的时候,把 testContentTable 的 DC 保存到数据库。
每次数据编辑的时候下拉选择对应的方法onStationDcItemChange()会被调用
不用重复说同一件事情。我理解现在问题是你在下面表格编辑之后保存不了数据是吗?还是我理解有误?
请说清楚你的问题是哪里?
之前提供的代码缺少部分类,比如 station,所以并不能运行
为什么跟主表的信息关联不上
@Subscribe(“baocun”)
private void onBaocunClick(Button.ClickEvent event) {
//testContentDc.getMutableItems().clear();
OpticalMonitor opticalMonitor = getEditedEntity();
//dataManager.remove(opticalMonitor);
//OpticalMonitor saveOptical = dataManager.commit(opticalMonitor);
List opticalContentList = opticalMonitor.getTestContent();
List saveopticalContentList = new ArrayList();
for(OpticalContent opticalContent:opticalContentList){
//dataManager.remove(opticalContent);
//opticalContent.setOpticalMonitor(opticalMonitor);
OpticalContent saveOpticalContent=dataManager.commit(opticalContent);
saveopticalContentList.add(saveOpticalContent);
}
//this.getWindow().setCloseable(true);
testContentDc.getMutableItems().addAll(saveopticalContentList);
closeWithDefaultAction();
}
看上去需要再把 saveopticalContentList 设置回 opticalMonitor ? 这一步最好用 DC 来操作,能反映到 UI 上。
saveopticalContentList 设置 opticalMonitor的话,opticalMonitor的数据自动保存到库里,然后在保存就报主键冲突了
如果保存数据 后 表单界面自动关闭,列表页面自动刷新怎么写
监听关闭事件,在监听器中更新列表的 DC 呀。
这一步最好用 DC 来操作,能反映到 UI 上。这个怎么写,界面上已经关联了
监听关闭事件,在监听器中更新列表的 DC 呀。给我发一下写法,怎么写,
这个不是在同一个类里吧,一个在列表也,一个在编辑页面
也可以看下cuba源码,在browse页面打开一个editor,注册一个editor关闭后的lambda函数。比如UserBrowser.java里:
AbstractEditor editor = openEditor("sec$User.edit", newUser, OpenType.THIS_TAB,
ParamsMap.of("initCopy", true));
editor.addCloseListener(actionId -> {
if (Window.COMMIT_ACTION_ID.equals(actionId)) {
usersDs.refresh();
}
usersTable.focus();
});
我是想编辑界面关了以后显示browser页面
他给你回复的帖子里的链接,你有没有看到下面这段:

这里监听到了关闭事件。
.withAfterCloseListener(e -> {
notifications.create().withCaption("Closed").show();
})

已解决,已解决,已解决,已解决,已解决,已解决,已解决,
如果字数不够回帖,可以讲讲解决的过程
closeWithDiscard();
lookupOpticalMonitor();
}
private void lookupOpticalMonitor() {
screenBuilders.lookup(OpticalMonitor.class,this)
.withScreenId("edyj_OpticalMonitor.browse") // specific lookup screen
//.withLaunchMode(OpenMode.DIALOG) // open as modal dialog
.build()
.show();
}
1 个赞
