轉載:https://www.cnblogs.com/niceyoo/p/9827668.html
1、需求
先說一下需求場景吧,我們知道 jeecg 中提供了下拉,其中包含兩種使用場景;
一種是直接通過 t:dictSelect 使用,再就是 t:dgCol 用於表頭的列表工具條標簽;
總之就是這個樣子
需求來了,我們想要下拉的數據有個排序,比如原來沒有排序的
再來看一下數據字典表中的數據如下:
然后,我們希望通過 類型編碼做一個 倒序的排序,最終的效果如下:
2、解決過程
首先通過查找資料了解到,下拉中有個 dictionary 屬性,可以通過自定義字典實現效果,格式:表名,編碼,顯示文本;
但是想使用自定義字典需要結合 dictCondition(自定義字典表的顯示文本-字典查詢條件) 屬性;
在 DataGridTag 類 559 行找到了,找到了字典查詢條件 dictCondition 的使用
圖片展示已經很明確了,就是一個 sql 的拼裝,我們只需要能把 sql 寫出來就完事了,如下圖
SELECT a.typecode,a.typename FROM t_s_type a ,t_s_typegroup b WHERE a.typegroupid = b.id AND b.typegroupcode = 'mwo_work_order_status' ORDER BY typecode DESC
因為界面要用到編碼以及顯示文本,所以只需要 typecode、typename作為顯示項。
我們再來看一下自定義字典的格式 【表名,編碼,顯示文本】
<t:dgCol title="啦啦啦" field="xxx" queryMode="single" query="true" dictionary="t_s_type,a.typecode,a.typename" dictCondition="a ,t_s_typegroup b WHERE a.typegroupid = b.id AND b.typegroupcode = 'mwo_work_order_status' ORDER BY typecode DESC "> </t:dgCol>
dictionary="t_s_type,a.typecode,a.typename" >>> 表名,編碼,顯示文本
dictCondition="a ,t_s_typegroup b WHERE a.typegroupid = b.id AND b.typegroupcode = 'mwo_work_order_status' ORDER BY typecode DESC "
最終拼接起來的 sql 如上邊那段了。
再給一個參考:
<t:dictSelect field="mwoApplyDelayProcess" type="radio" dictTable="t_s_type a ,t_s_typegroup b" dictField="a.typecode,a.typename,a.typecode" dictCondition="WHERE a.typegroupid = b.id AND b.typegroupcode = 'mwo_apply_delay_process' AND a.`typecode` IN (2,3)" dictText="typename" defaultVal="${myyWorkOrderPage.mwoApplyDelayProcess}" hasLabel="false" title="申請延期狀態" datatype="*"> </t:dictSelect>
3、最后
這種實現方式是比較。。那啥的。。不喜勿噴,歡迎補充。
博客地址:http://www.cnblogs.com/niceyoo