如何通过插件修改单据体列字段的显示顺序原创
金蝶云社区-闪电旋风劈
闪电旋风劈
6人赞赏了该文章 1631次浏览 未经作者许可,禁止转载编辑于2022年08月05日 15:53:27

关键词:

控件 表单设计器控件 单据体

一、需求

单据体列在展示时需要能根据条件自动变更展示的顺序,比如某些记录单以月份为列名,在当月时,查看单据需要当月的列排在第一列.

image.png

图1 示例

二、思路与方案

2.1 分析思路

单据体行是可以通过this.getModel().moveEntryRowDown等方法修改展示的顺序,而经过查看接口方法,并没有对列的类似接口。

而我们发现,表格配置是可以修改初始的列顺序image.png


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");
}

四、效果图

 image.png

 

 


图2 替换前

image.png  


图3 替换后

 

五、开发环境版本

COSMICV4.0.014.0

六、注意事项

此方法修改列显示顺序后,修改会保存到表格配置中;

七、参考资料

【开发平台】指导手册

学习成长中心


赞 6