单据列表打开时过滤控件设置默认收起原创
5人赞赏了该文章
477次浏览
编辑于2023年12月22日 10:25:26
最近接到个需求,打开单据列表时过滤条件默认收起,即下图所示
而不是默认的展开,见下图
在元数据过滤控件那配置【默认折叠】为开,无效!
写列表插件,如下,也无效!!
FilterContainer container = this.getView().getControl("filtercontainerap"); container.setCollapse(true); container.setDefCollapse(true); container.setCollapseable(true);
最后比较了下收起过滤和展开过滤两种情况下,打开单据列表接口返回值的差异,发现了盲点!!!
跟踪源码跟到了赋值这个setting的代码kd.bos.mvc.FormConfigFactory#getSetting(kd.bos.form.FormShowParameter)
这样就简单了,只需在打开单据列表前,把这个setting里的fold设置为true就行了,所以逻辑写在了首页表单插件里,点应用就会触发。
private static final String LISTSETTING = ".ListSetting"; @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); //查出应用所有菜单绑定的跳转单据 List<AppMenuInfo> menuInfoList = AppMetadataCache.getAppMenusInfoByAppId(this.getView().getFormShowParameter().getAppId()); Set<String> entities = menuInfoList.stream().map(AppMenuInfo::getFormId).collect(Collectors.toSet()); Map<String, Object> map = new HashMap<>(); Map<String, Object> foldMap = new HashMap<>(); foldMap.put("fold",true);//true为收起,false为展开 for (String entity : entities){ map.clear(); String setting = UserConfigServiceHelper.getSetting(Long.parseLong(RequestContext.get().getUserId()),entity+LISTSETTING); if (StringUtils.isNotBlank(setting)){ map = (Map) SerializationUtils.fromJsonString(setting, Map.class); } map.put("filtercontainerap",foldMap); UserConfigServiceHelper.setSetting(Long.parseLong(RequestContext.get().getUserId()),entity+LISTSETTING,SerializationUtils.toJsonString(map)); } }
推荐阅读