首页卡片之间如何进行数据交互原创
3人赞赏了该文章
545次浏览
编辑于2023年08月11日 11:06:13
关键词:自定义卡片、页面缓存、父页面、子页面、pageid
一、需求
在系统首页中,有两个自定义卡片,如何实现点击卡片a的某个按钮时,把卡片a整数字段sunp_a的值赋值到卡片b的整数字段sunp_b中。
二、思路与方案
(1)pageid:每次页面打开时,都会生成一个pageid,页面关闭时销毁。
(2)根据pageid可以获取视图模型view
(3)根据视图模型view可以获取数据模型model
(4)根据数据模型model可以修改页面的数据
(5)卡片a何卡片b共用的同一个父页面,因此可以把卡片b的pageid放到父页面缓存中,然后卡片a就可以拿到卡片b的pageid对卡片b的页面数据进行修改
三、实现过程
1、存储卡片b的pageid
//卡片b的表单插件 public class CardBFormPlugin extends AbstractFormPlugin implements Plugin { @Override public void afterCreateNewData(EventObject e) { //把当前页面的pageid存到父页面的页面缓存中 String pageId = this.getView().getPageId(); IFormView parentView = this.getView().getParentView(); parentView.getPageCache().put("pageIdB",pageId); super.afterCreateNewData(e); } @Override public void beforeClosed(BeforeClosedEvent e) { //清除缓存 IFormView parentView = this.getView().getParentView(); parentView.getPageCache().remove("pageIdB"); super.beforeClosed(e); } }
2、点击卡片a的按钮时,把卡片a的数据同步到卡片b中
public class CardAFormPlugin extends AbstractFormPlugin implements Plugin { @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); } @Override public void registerListener(EventObject e) { Button bt=(Button)this.getView().getControl("sunp_buttonap"); bt.addClickListener(this); super.registerListener(e); } @Override public void click(EventObject evt) { if (evt.getSource() instanceof Button){ Button bt=(Button)evt.getSource(); String key = bt.getKey(); if (key.equals("sunp_buttonap")){ //父页面中获取存储的B页面的pageid IFormView parentView = this.getView().getParentView(); //B页面的pageid String pageIdB = parentView.getPageCache().get("pageIdB"); //B页面的视图view IFormView viewB = this.getView().getView(pageIdB); //设置b页面整数b字段锁定性 // viewB.setEnable(false,"sunp_b"); //B页面的数据模型model IDataModel modelB = viewB.getModel(); //根据数据模型修改B页面整数b的数据=当前a页面的整数a的数据 modelB.setValue("sunp_b",this.getModel().getValue("sunp_a")); //跨页面调用需要给前端推送指令 this.getView().sendFormAction(viewB); } } super.click(evt); }
四、效果图
五、开发环境版本
V5.0.011
六、参考资料
kdclz20230811.zip(12.17KB)
sunp_showcloud-sunp_demoapp-20 …(5.73KB)
推荐阅读