如何通过插件修改单据体列字段的显示顺序原创
7人赞赏了该文章
2,128次浏览
编辑于2022年08月05日 15:53:27
关键词:
控件 表单设计器控件 单据体
一、需求
单据体列在展示时需要能根据条件自动变更展示的顺序,比如某些记录单以月份为列名,在当月时,查看单据需要当月的列排在第一列.
图1 示例
二、思路与方案
2.1 分析思路
单据体行是可以通过this.getModel().moveEntryRowDown等方法修改展示的顺序,而经过查看接口方法,并没有对列的类似接口。
而我们发现,表格配置是可以修改初始的列顺序
2.2 实现方案
本案例通过表格参数的接口方法gridConfigDAO.saveGridConfig,直接干预表格配置信息,从而影响前端列的显示顺序
三、实现过程
代码示例:(替换一月和三月两列)
public void afterBindData(EventObject e) { // TODO Auto-generated method stub EntryGrid entryGrid = this.getControl("kded_entryentity"); List<FieldEdit> fields = entryGrid.getFieldEdits();//获取单据体字段 List<GridConfigurationRow> beans = new ArrayList<GridConfigurationRow>(); int i =0; for (FieldEdit fieldEdit : fields) { String fieldkey = fieldEdit.getFieldKey(); LocaleString FieldName = fieldEdit.getProperty().getDisplayName(); GridConfigurationRow bean = new GridConfigurationRow(); //构造正常的表格配置 bean.setColWidth(0); bean.setFreeze(false); bean.setHide(false); bean.setTextAlign("default"); bean.setFieldKey(fieldkey); bean.setFieldName(FieldName); //替换一月 三月两列位置 ,可按实际需求进行排序 if (i==0) { bean.setFieldKey(fields.get(2).getFieldKey()); bean.setFieldName(fields.get(2).getProperty().getDisplayName()); } if (i==2) { bean.setFieldKey(fields.get(0).getFieldKey()); bean.setFieldName(fields.get(0).getProperty().getDisplayName()); } beans.add(bean); i++; } //保存表格配置并刷新生效 GridConfigDAO gridConfigDAO = new GridConfigDAO(); gridConfigDAO.saveGridConfig(this.getView().getFormShowParameter().getFormId(), "kded_entryentity", beans); this.getView().updateView("kded_entryentity"); }
四、效果图
图2 替换前
图3 替换后
五、开发环境版本
COSMICV4.0.014.0
六、注意事项
此方法修改列显示顺序后,修改会保存到表格配置中;
七、参考资料
赞 7
7人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读