参考这位同学写的案例,通过BillShowParameter将一个单据嵌入到另一个单据中。
https://vip.kingdee.com/article/161857340805532928?productLineId=29&islogin=true
将子单据嵌入后,在父单据的页面插件中,修改子单据的数据,伪代码如下:
var cache = this.getView().getPageCache(); // 获取页面缓存
var subPageId = cache.get("subPageId"); // 获取子单据的id (参考上面的链接)
var subView = this.getView().getView(subPageId); // 获取子单据的view
subView.getModel().setValue("textfield", "123456"); // 给子单据的textfield字段赋值123456
上述代码成功执行后,前端并没有展示修改后的值
经过漫长的debug,发现:如果想要在当前页面修改子页面的数据,必须显式调用this.getView().sendFormAction(subView);才会在前端显示。所以完整的代码为:
var cache = this.getView().getPageCache(); // 获取页面缓存
var subPageId = cache.get("subPageId"); // 获取子单据的id (参考上面的链接)
var subView = this.getView().getView(subPageId); // 获取子单据的view
subView.getModel().setValue("textfield", "123456"); // 给子单据的textfield字段赋值123456
this.getView().sendFormAction(subView);
备注:使用以上逻辑跨页面修改数据(比如子页面修改父页面数据),都需要调用this.getView().sendFormAction()
推荐阅读