主表和子表数据关联查询,子表信息不能在线编辑

执行了这个代码之后数据库的数据没变啊,每次数据编辑的时候下拉选择对应的方法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 呀。给我发一下写法,怎么写,

这个不是在同一个类里吧,一个在列表也,一个在编辑页面

建议花 20 分钟读一下这里,特别是下面这个截图的内容,是否就是你需要的?
image

也可以看下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页面

他给你回复的帖子里的链接,你有没有看到下面这段:
image

这里监听到了关闭事件。

 .withAfterCloseListener(e -> {
                notifications.create().withCaption("Closed").show();
            })

image

已解决,已解决,已解决,已解决,已解决,已解决,已解决,

如果字数不够回帖,可以讲讲解决的过程:grinning:

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 个赞