如何通过插件对单据体的数据进行排序原创
16人赞赏了该文章
5,532次浏览
编辑于2022年08月05日 15:53:08
关键词:
控件 表单设计器控件 单据体
一、需求
单据体在新增行时,是在下方插入,一般是倒序的。
且有些单据体数据是引入的,数据可能是无序的。
或者有些场景需要单据体按照某个字段进行顺序展示。
二、思路与方案
实现方案
图1 示例
本案例以时间字段为例,对单据体进行按时间最新在上为标准进行排序。
单据体是没有像列表一样的oderby方法的,所以我们可以通过IEntryOperate接口的moveEntryRowDown等方法使单据体数据在展示时能够按顺序排列
三、实现过程
1. 关键接口方法
this.getModel().moveEntryRowDown(string,int); this.getModel().moveEntryRowUp (string, int);
2. 代码示例:
@Override public void afterBindData(EventObject e) { // TODO Auto-generated method stub super.afterBindData(e); String status =this.getView().getFormShowParameter().getStatus().name(); //判断单据当前状态是否在新增态下,如果是新增,下面的方法会报错 if (!status.equals("ADDNEW")) { DynamicObjectCollection entry = this.getModel().getEntryEntity("kded_entryentity"); //朴实无华的冒泡排序算法,你可以选用性能更好的排序算法 for (int i = 0; i < entry.size()-1; i++) { for(int j =0 ;j<entry.size()-1-i;j++) { Date date = entry.get(j).getDate("kded_datefield"); Date date1 = entry.get(j+1).getDate("kded_datefield"); if (date.before(date1)) { //单据体行下移 this.getModel().moveEntryRowDown("kded_entryentity", j); } } } this.getView().updateView("kded_entryentity"); } }
图2 排序前
图3 排序后
五、开发环境版本
COSMICV4.0.014.0
六、注意事项
此方法排序后,如果进行保存或提交操作,数据库里保存的数据顺序也会改变;
如未进行操作,数据库表的数据依旧是无序的,只是展示的时候会进行排序
七、参考资料
赞 16
16人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读