如何透過報表單元格右鍵控制報表跳轉到不同連結地址
需求說明:
潤乾報表的單元格中支援超連結屬性,使用者可以透過設定該屬性,實現在瀏覽器端用滑鼠點選某個單元格跳轉到指定頁面,並且還能夠傳遞所需要的引數,從而實現資料的鑽取(詳見 )。不過這種超連結的設定方式只能跳轉到單一的指定頁面,在一些特殊的業務要求中,使用者可能需要基於一個單元格檢視不同的明細資訊。比如,使用者在訪問一個地區列表時,既想經由該頁面檢視某地區的銷售收入情況,又想檢視該地區的其他資訊。這樣,在原有方式下就需要增加多個超連結按鈕,每個按鈕設定不同的超連結,而這種做法不一定能符合使用者的頁面樣式需要或者操作習慣。下面,透過一個實際例子來介紹一下,如何在頁面中增加右鍵操作,點選右鍵時先彈出可鑽取的列表,選擇後跳轉到不同的頁面。
一:設定報表格式
按照實際需求,開發報表模板,如下圖:
報表格式比較簡單,是一個比較普通的分組報表,A2 單元格按照國家進行分組,B2 單元格按照省份進行分組,C2 單元格顯示出對應的城市名稱,報表展現結果如下:
現在要求,在城市列增加右鍵操作,右鍵時彈出地址選擇列表。
報表單元格有個屬性為 HTML 事件屬性,可以在該屬性中設定 html 觸發事件,如在 C2 單元格的 HTML 事件屬性表示式中寫入:“popMenu 函式,並將 C2 單元格的值傳入進行,這樣報表中設定了 C2 單元格的右鍵操作,只需要在顯示報表的 jsp 中實現 popMenu 這個 js 函式以及相關操作即可。
二:頁面 javascript 設定
在顯示報表的 jsp 的 javascript 中實現相應操作,首先,因為頁面中要右鍵操作,所以要先遮蔽掉瀏覽器本身的右鍵,在 js 中加入如下程式碼:
function disClick(){ return false; } document.oncontextmenu=disClick; 接下來的話就是要實現報表中指定的右鍵操作,整體的js程式碼如下: <SCRIPT> function disClick(){ return false; } document.oncontextmenu=disClick; var strMenu = "<div id=\\"menu\\" class=\\"clsMenu\\" onMouseover=\\"highlight()\\" onMouseout=\\"lowlight()\\">" strMenu += "</div>" // 判斷客戶端瀏覽器 function showmenu(){ var rightedge=document.body.clientWidth-event.clientX var bottomedge=document.body.clientHeight-event.clientY if (rightedge<menu.offsetWidth) menu.style.left=document.body.scrollLeft+event.clientX-menu.offsetWidth else menu.style.left=document.body.scrollLeft+event.clientX if (bottomedge<menu.offsetHeight) menu.style.top=document.body.scrollTop+event.clientY-menu.offsetHeight else menu.style.top=document.body.scrollTop+event.clientY menu.style.visibility="visible" return false } function sysMenu(){ return false } // 隱藏選單 function hidemenu(){ menu.style.visibility="hidden" } // 選單項獲得焦點時加亮顯示 function highlight(){ if (event.srcElement.className=="menuitems"){ event.srcElement.style.backgroundColor="highlight" event.srcElement.style.color="highlighttext" } } // 選單項失去焦點 function lowlight(){ if (event.srcElement.className=="menuitems"){ event.srcElement.style.backgroundColor="" event.srcElement.style.color="menutext" } } function openNewWindow(winhref,winstyle){ var objNewWindow = window.open(winhref,"",winstyle); objNewWindow.focus(); } document.write(strMenu); function popMenu(cb) { var SubstrMenu = "<div class=\\"menuitems\\" onClick=\\"window.open(')\\">查“"+cb+"”的所有客戶(百度)</div>"; SubstrMenu += "<div class=\\"menuitems\\" onClick=\\"window.open(')\\">查“"+cb+"”的重點客戶(百度)</a></div>"; SubstrMenu += "<hr>"; SubstrMenu += "<div class=\\"menuitems\\" onClick='hidemenu()'>隱藏此選單</a></div>"; menu.innerHTML = SubstrMenu; showmenu(); return false; } </SCRIPT> 另外,為了更好的顯示效果,還可以增加css樣式來進行控制,將如下樣式同樣加入到jsp頁面中: ```java <STYLE>.clsMenu { BORDER-RIGHT: buttonhighlight 2px outset; BORDER-TOP: buttonhighlight 2px outset; VISIBILITY: hidden; BORDER-LEFT: buttonhighlight 2px outset; WIDTH: 200px; CURSOR: default; COLOR: menutext; BORDER-BOTTOM: buttonhighlight 2px outset; POSITION: absolute; BACKGROUND-COLOR: menu } .menuitems { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 12px; COLOR: #000000; LINE-HEIGHT: 18px } </STYLE>function disClick(){ return false; } document.oncontextmenu=disClick; 接下來的話就是要實現報表中指定的右鍵操作,整體的js程式碼如下: <SCRIPT>function disClick(){ return false; } document.oncontextmenu=disClick; var strMenu = "<div id=\\"menu\\" class=\\"clsMenu\\" onMouseover=\\"highlight()\\" onMouseout=\\"lowlight()\\">"strMenu += "</div>"// 判斷客戶端瀏覽器function showmenu(){ var rightedge=document.body.clientWidth-event.clientX var bottomedge=document.body.clientHeight-event.clientY if (rightedge<menu.offsetWidth) menu.style.left=document.body.scrollLeft+event.clientX-menu.offsetWidth else menu.style.left=document.body.scrollLeft+event.clientX if (bottomedge<menu.offsetHeight) menu.style.top=document.body.scrollTop+event.clientY-menu.offsetHeight else menu.style.top=document.body.scrollTop+event.clientY menu.style.visibility="visible" return false}function sysMenu(){ return false}// 隱藏選單function hidemenu(){ menu.style.visibility="hidden"}// 選單項獲得焦點時加亮顯示function highlight(){ if (event.srcElement.className=="menuitems"){ event.srcElement.style.backgroundColor="highlight" event.srcElement.style.color="highlighttext"} }// 選單項失去焦點function lowlight(){ if (event.srcElement.className=="menuitems"){ event.srcElement.style.backgroundColor="" event.srcElement.style.color="menutext"} }function openNewWindow(winhref,winstyle){ var objNewWindow = window.open(winhref,"",winstyle); objNewWindow.focus(); } document.write(strMenu); function popMenu(cb) { var SubstrMenu = "<div class=\\"menuitems\\" onClick=\\"window.open(')\\">查“"+cb+"”的所有客戶(百度)</div>"; SubstrMenu += "<div class=\\"menuitems\\" onClick=\\"window.open(')\\">查“"+cb+"”的重點客戶(百度)</a></div>"; SubstrMenu += "<hr>"; SubstrMenu += "<div class=\\"menuitems\\" onClick='hidemenu()'>隱藏此選單</a></div>"; menu.innerHTML = SubstrMenu; showmenu(); return false; } </SCRIPT> 另外,為了更好的顯示效果,還可以增加css樣式來進行控制,將如下樣式同樣加入到jsp頁面中: ```java <STYLE>.clsMenu { BORDER-RIGHT: buttonhighlight 2px outset; BORDER-TOP: buttonhighlight 2px outset; VISIBILITY: hidden; BORDER-LEFT: buttonhighlight 2px outset; WIDTH: 200px; CURSOR: default; COLOR: menutext; BORDER-BOTTOM: buttonhighlight 2px outset; POSITION: absolute; BACKGROUND-COLOR: menu } .menuitems { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 12px; COLOR: #000000; LINE-HEIGHT: 18px } </STYLE>
這樣,在瀏覽器端就能夠實現在單元格上滑鼠右鍵跳轉到不同的連結地址:
注:本例連結地址設定到了百度,實際中跳轉可以自行根據實際需求在 js 中進行設定。
總結:
本例中透過報表的 HTML 事件屬性實現了單元格的右鍵跳轉到不同的連結地址,報表中除了右鍵屬性外,還支援其他的一些觸發事件操作,具體可以參考報表幫助文件:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2669214/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【轉載】SAP ABAP ALV報表控制編輯行,編輯單元格
- 皕傑報表單元格空格
- 玩轉報表超連結
- FastReport 如何透過程式碼建立報告表單AST
- 報表如何透過引數控制資料許可權
- 如何透過前端表格控制元件實現自動化報表?前端控制元件
- 報表也可以根據單元格計算後結果進行排序排序
- 超連結鑽取之圖表鑽取、單元格資料鑽取
- 普通填報表單元格實現資料二次篩選
- table表頭單元格斜線效果
- 報表連 MongoDB,資料量大報表慢,怎麼做分頁?MongoDB
- 「小碼短連結」好用、好看、有統計報表的短連結工具
- 通過外來鍵連線多個表
- 反轉相鄰連結串列單元
- 【C#】【DevExpress】自定義單元格右鍵選單,去除單元格編輯時,載入系統的預設選單C#devExpress
- 點選連結跳轉到應用指定頁面
- 資料結構——單鍵表操作集資料結構
- Mindjump如何透過程式碼實現微信中點選連結直接跳轉到手機預設瀏覽器)瀏覽器
- SQLServer通過連結伺服器查詢表報錯 “訊息 7313,級別 16”SQLServer伺服器
- 手動新增git到 右鍵選單Git
- win10右鍵選單出現左邊如何恢復到右邊_win10右鍵選單在左邊怎麼改回右邊Win10
- 【資料結構】線性表-單連結串列資料結構
- JavaScript 阻止超連結跳轉JavaScript
- 超連結的跳轉位置
- 012 透過連結串列學習Rust之持久化單連結串列Rust持久化
- 什麼是大報表?如何解決大報表的問題?
- 如何將報表與Lazarus中FastReport的資料連線?AST
- 如何管理win10右鍵新建選單_win10如何清理右鍵新建選單Win10
- Windows如何新增右鍵新建選單Windows
- easyExcel多行表頭設定不同樣式和特定單元格設定樣式的實現Excel
- 如何分析報表效能問題
- HTML樣式插入、連結、表單標籤HTML
- [提問交流]這要如何實現跳轉連結
- Flutter Form表單控制元件超全總結FlutterORM控制元件
- web 端展現報表時查詢表單如何實現引數聯動Web
- 如何給頁面新增追加右鍵選單(原右鍵選單功能保持不變)
- 點選連結取消跳轉效果
- JavaScript 阻止超連結的跳轉JavaScript