单据列表,根据中文字段拼音排序原创
1人赞赏了该文章
486次浏览
编辑于2023年09月20日 17:25:28
关键词:列表,拼音,排序
一、需求
单据列表中文字段要求以拼音排序,标准产品列表中文字段是跟数据库字段排序确定的。而不同的数据库,排序机制又不一样。这样就给我们项目中就需要自行二开实现汉字拼音排序的这个需求。
数据库汉字排序机制
https://blog.csdn.net/Senssic/article/details/38557521
二、思路与方案
2.1分析思路
可以添加拼音字段,作为排序的辅助字段
2.2实现方案
1、单据添加需要排序的中文辅助字段,列表中不需要展示该拼音字段。
2、列表添加排序按钮,通过页面缓存将参数传递到setFilter事件中,判断是升序还是降序。
三、实现过程
1、单据中添加汉字的排序拼音字段
2、列表中添加排序按钮(donothing)
3、添加列表插件,重写itemclick,setFilter事件
@Override public void itemClick(ItemClickEvent evt) { super.itemClick(evt); String itemKey = evt.getItemKey(); if(itemKey.equals("lago_baritemap")){//升序按钮监听 this.getPageCache().put("order","order");//通过页面缓存传参,升序 this.getView().invokeOperation("refresh");//执行列表刷新,否则页面不会调用setfilter事件 } if(itemKey.equals("lago_baritemap1")){//降序按钮监听 this.getPageCache().put("order","desc");//通过页面缓存传参,降序 this.getView().invokeOperation("refresh"); } } @Override public void setFilter(SetFilterEvent e) { super.setFilter(e); //从缓存中取排序参数 String order = this.getPageCache().get("order"); //根据参数判定执行拼音字段排序 if(order!=null&&order.equals("order")){ e.setOrderBy("lago_textfield1 asc"); } if(order!=null&&order.equals("desc")){ e.setOrderBy("lago_textfield1 desc"); } }
四、效果图
列表中,拼音字段可以不展示,展示出来只是为了演示效果~
五、开发环境版本
V5.0.011
六、注意事项
如果拼音字段手动录入比较麻烦,可以写插件实现汉字转拼音,或者写定时任务,将历史数据字段统一转一遍拼音字段即可
汉字转拼音方案,可以参考下面方案,也可以自行查找,这个应用已经比较广泛了。
https://blog.51cto.com/u_16213461/7002730
https://blog.csdn.net/weixin_50518271/article/details/117449995
七、参考资料
八、源代码
源码.zip(5.37KB)
赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读