sortable 拖拽时互换目标的位置_报表如何实现行列互换效果?
通常我們?cè)O(shè)計(jì)的二維的交叉報(bào)表,橫向的維度和縱向的維度是固定的,而用戶希望更希望能根據(jù)自己的需要快速轉(zhuǎn)換橫向縱向維度來查看報(bào)表。
如上圖所示,我們通過點(diǎn)擊一個(gè)按鈕或文字,就可將報(bào)表的行列維度互相轉(zhuǎn)換,這樣的動(dòng)態(tài)轉(zhuǎn)換效果要怎么設(shè)置實(shí)現(xiàn)呢?
這里我介紹兩種方法實(shí)現(xiàn)方法:
1. 兩張報(bào)表超鏈接
2. 單張報(bào)表動(dòng)態(tài)判斷
兩張報(bào)表超鏈接
實(shí)現(xiàn)思路:
二維的交叉報(bào)表行列維度有兩種情況,我們只需對(duì)應(yīng)兩種情況做兩張報(bào)表,切換的按鈕用超鏈接實(shí)現(xiàn),連接的目標(biāo)就是另一張報(bào)表。
具體實(shí)現(xiàn):
1. 新建一張報(bào)表,文件名為行列轉(zhuǎn)換 1.rpx, 數(shù)據(jù)源使用潤(rùn)乾設(shè)計(jì)器下自帶的 demo 數(shù)據(jù)源,數(shù)據(jù)集使用 SQL 檢索方式,SQL 為:SELECT 訂單. 貨主地區(qū), 訂單. 訂單金額, 雇員. 姓氏 + 雇員. 名字 as 雇員 FROM 訂單, 雇員 WHERE 訂單. 雇員 ID = 雇員. 雇員 ID 。
2. 設(shè)置報(bào)表單元格表達(dá)式,潤(rùn)乾設(shè)計(jì)器中單元格可以直接寫表達(dá)式,也支持拖拽字段生成表達(dá)式。
B1 單元格我們通過拖拽字段的方式生成表達(dá)式:在設(shè)計(jì)器右下角的數(shù)據(jù)集面板中可以看到我們剛才新建的數(shù)據(jù)集和字段,選擇對(duì)應(yīng)字段,然后選擇分組,將字段拖拽到 B1 單元格中,
B1 單元格就會(huì)出現(xiàn) =ds1.group(貨主地區(qū); 貨主地區(qū));
A2 單元格同 B1 的操作,不同的是選擇雇員字段拖拽,生成的表達(dá)式為 =ds1.group(雇員; 雇員:1);
B2 單元格選擇訂單金額,選擇匯總,匯總方式為求和,拖拽字段到 B2 單元格中,表達(dá)式為 =ds1.sum(訂單金額)。
3. 修改單元格擴(kuò)展方式,單元格的擴(kuò)展方向默認(rèn)為縱向,選中 B1,在右側(cè)屬性面板中設(shè)置擴(kuò)展方式為橫向擴(kuò)展。
4.A1 單元格中直接寫上行列互換,設(shè)置超鏈接表達(dá)式:“./showReport.jsp?rpx=/30 交互報(bào)表 / 行列互換 2.rpx”,超鏈接窗口為:_self。
5. 將當(dāng)前報(bào)表另存一張,保存文件名為“行列轉(zhuǎn)換 2.rpx”,將 B1 和 A2 單元格表達(dá)式對(duì)調(diào),將 A1 的超鏈接表達(dá)式修改為:“./showReport.jsp?rpx=/30 交互報(bào)表 / 行列互換 1.rpx”。
經(jīng)過以上設(shè)置,我們就完成了最不燒腦的二維報(bào)表行列互換報(bào)表的制作,使用 showReport.jsp 訪問行列轉(zhuǎn)換 1.rpx,點(diǎn)擊行列轉(zhuǎn)換那幾個(gè)字就會(huì)變成行列轉(zhuǎn)換 2.rpx,用戶盡管點(diǎn)擊切換,不用做條件判斷。
單張報(bào)表動(dòng)態(tài)判斷
實(shí)現(xiàn)思路:
根據(jù)標(biāo)志 flag 當(dāng)前值,來改變他的值,根據(jù)這個(gè)值確定橫向分組和縱向分組使用的字段。
具體實(shí)現(xiàn)
1. 將行列轉(zhuǎn)換 1.rpx 另存一個(gè)報(bào)表,文件名為行列轉(zhuǎn)換.rpx。
2. 報(bào)表中增加一個(gè)普通參數(shù),參數(shù)名稱為 change, 數(shù)據(jù)類型為整數(shù),默認(rèn)的參數(shù)值為 1;
兩個(gè)動(dòng)態(tài)參數(shù):參數(shù)名稱 group1, 數(shù)據(jù)類型為字符串,值表達(dá)式為 if(change==1,“貨主地區(qū)”,“雇員”;
參數(shù)名稱 Group2, 數(shù)據(jù)類型為字符串,值表達(dá)式為 if(change==1,“雇員”,“貨主地區(qū)”)。
3. 修改單元格表達(dá)式
橫向分組和縱向分組的字段通過動(dòng)態(tài)參數(shù)的值,動(dòng)態(tài)變化,將 B1 的表達(dá)式修改為 =ds1.group(${group1};${group1}:1),將 A2 的表達(dá)式修改為 =ds1.group(${group2};${group2}:1)。
4. 修改行列互換的超鏈接表達(dá)式
超鏈接表達(dá)式為:“./showReport.jsp?rpx=/30 交互報(bào)表 / 行列互換.rpx&change=”+if(change==1,-1,1)
經(jīng)過以上設(shè)置,我們通過 showReport.jsp 訪問行列轉(zhuǎn)換.rpx, 在瀏覽器地址欄中,輸入 url:
http://localhost:6868/demo/reportJsp/showReport.jsp?rpx=/30 交互報(bào)表 / 行列轉(zhuǎn)換.rpx訪問。
當(dāng)點(diǎn)擊表頭中的行列轉(zhuǎn)換文字,刷新的報(bào)表還是當(dāng)前的報(bào)表,但 change 的參數(shù)值已經(jīng)變成了 -1,并且行列的分組字段也發(fā)生了變化。
通過上面介紹的兩種方法都能快速的實(shí)現(xiàn)報(bào)表行列互換的效果,如果不想做多張報(bào)表來實(shí)現(xiàn),推薦使用第二種實(shí)現(xiàn)方法,如果不習(xí)慣條件判斷的設(shè)置,可以使用第一種方法,雖然涉及到兩張報(bào)表,只是另存第一張報(bào)表,簡(jiǎn)單修改就行,修改的工作量可忽律不計(jì),也沒有第二種方法的小彎彎繞,具體根據(jù)自己的情況選擇合適的方法吧。
附件中是兩種方法實(shí)現(xiàn)的報(bào)表實(shí)例,方便對(duì)照文章實(shí)現(xiàn)行列互換的需求。
總結(jié)
以上是生活随笔為你收集整理的sortable 拖拽时互换目标的位置_报表如何实现行列互换效果?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python编程人脸识别工具_几行代码带
- 下一篇: 用python实现计算器功能_使用pyt