苍穹页面内嵌到父页面,在父页面刷新子页面原创
金蝶云社区-生态
生态
52人赞赏了该文章 6,724次浏览 未经作者许可,禁止转载编辑于2020年12月07日 22:14:22

页面如何内嵌其他页面参考:https://club.kdcloud.com/article/50228952697954816

1、样例主要解决多页签,每个页签弹出一个页面或者列表,但是每次showForm就会出现抖动现象, 处理这个抖动现象可以使用父页面刷新子页面某些控件实现,

如:在父页面弹出分组基础资料列表页面,想隐藏分组基础资料模板列表bos_templatetreelist的一些控件包含下级搜索控件等,这个隐藏的代码可以在子页面插件的initialize方法用this.getView().setVisible(false,  "iscontainlower", "searchap");设置

2、在父页面插件

/**

  billFormId  表单标识

  flexId 内嵌到容器面板标识

*/

private void showList(String billFormId,String flexId) {

  ListShowParameter showParameter = new ListShowParameter();
  showParameter.setBillFormId(billFormId);
  showParameter.getOpenStyle().setShowType(ShowType.InContainer);
  showParameter.getOpenStyle().setTargetKey(flexId);
  StyleCss style = new StyleCss();
  style.setWidth("100%");
  style.setHeight("100%");
  showParameter.getOpenStyle().setInlineStyleCss(style);

  this.getView().showForm(showParameter);
  if (StringUtils.equals(billFormId, ”某子页面标识“)) {
      // 记录当前子页面
      this.getPageCache().put(”childpageid", showParameter.getPageId());
  }

}

3、页签点击事件监听,实现接口implements TabSelectListener

@Override
 public void registerListener(EventObject e) {

 Tab tab = this.getView().getControl("dmp_tabap");// tab切换页
  tab.addTabSelectListener(this);// 监听选择tab

}

页签点击事件

 @Override
 public void tabSelected(TabSelectEvent arg0) {
  String tabKey = arg0.getTabKey();

  if (StringUtils.equals(tabKey, "页签标识")) {

//用个状态字段去保存是否打开了页面,打开了就不需要再打开

  Integer status = (Integer) this.getModel().getValue("_status");
   if (status != 1 && status != 2) {
    this.showList(“子页面标识”, “父页面容器标识”);
    this.getModel().setValue("status", 1);
   }else if(status==2) {
    this.handleChildPage();
   }

  }

}

4、父页面向子页面刷新

 private void handleChildPage() {
  String childPageId = this.getPageCache().get("childpageid");
  IFormView childView = null;
  if (StringUtils.isNotBlank(childPageId)) {

  //获取子页面的view
   childView = this.getView().getView(childPageId);
   ListView listView = (ListView) childView;
   ITreeListView treeListView = listView.getTreeListView();
   treeListView.refresh();
   BillList billlist = childView.getControl("billlistap");
   billlist.refresh();

  //发送指令,不可缺少
   this.getView().sendFormAction(childView);
  }
 }


end ...


赞 52