需求说明:

润乾报表的单元格中支持超链接属性,用户可以通过设置该属性,实现在浏览器端用鼠标点击某个单元格跳转到指定页面,并且还能够传递所需要的参数,从而实现数据的钻取(详见《玩转报表超链接》)。不过这种超链接的设置方式只能跳转到单一的指定页面,在一些特殊的业务要求中,用户可能需要基于一个单元格查看不同的明细信息。比如,用户在访问一个地区列表时,既想经由该页面查看某地区的销售收入情况,又想查看该地区的其他信息。这样,在原有方式下就需要增加多个超链接按钮,每个按钮设置不同的超链接,而这种做法不一定能符合用户的页面样式需要或者操作习惯。下面,通过一个实际例子来介绍一下,如何在页面中增加右键操作,点击右键时先弹出可钻取的列表,选择后跳转到不同的页面。

一:设置报表格式

按照实际需求,开发报表模板,如下图:

报表格式比较简单,是一个比较普通的分组报表,A2 单元格按照国家进行分组,B2 单元格按照省份进行分组,C2 单元格显示出对应的城市名称,报表展现结果如下:

现在要求,在城市列增加右键操作,右键时弹出地址选择列表。

报表单元格有个属性为 HTML 事件属性,可以在该属性中设置 html 触发事件,如在 C2 单元格的 HTML 事件属性表达式中写入:“οncοntextmenu=popMenu(\’”+C2+“\’) onClick=hidemenu()”,该表达式含义为,设置点击右键时调用 popMenu 函数,并将 C2 单元格的值传入进行,这样报表中设置了 C2 单元格的右键操作,只需要在显示报表的 jsp 中实现 popMenu 这个 js 函数以及相关操作即可。

二:页面 javascript 设置

在显示报表的 jsp 的 javascript 中实现相应操作,首先,因为页面中要右键操作,所以要先屏蔽掉浏览器本身的右键,在 js 中加入如下代码:

function disClick(){return false;}document.οncοntextmenu=disClick;接下来的话就是要实现报表中指定的右键操作,整体的js代码如下:<SCRIPT>function disClick(){return false;}document.οncοntextmenu=disClick;var strMenu = "<div id=\\"menu\\" class=\\"clsMenu\\" onMouseover=\\"highlight()\\" onMouseout=\\"lowlight()\\">"strMenu += "</div>"// 判断客户端浏览器function showmenu(){var rightedge=document.body.clientWidth-event.clientXvar bottomedge=document.body.clientHeight-event.clientYif (rightedge<menu.offsetWidth)menu.style.left=document.body.scrollLeft+event.clientX-menu.offsetWidthelsemenu.style.left=document.body.scrollLeft+event.clientXif (bottomedge<menu.offsetHeight)menu.style.top=document.body.scrollTop+event.clientY-menu.offsetHeightelsemenu.style.top=document.body.scrollTop+event.clientYmenu.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('http://www.baidu.com/s?wd="+cb+"','_self')\\">查“"+cb+"”的所有客户(百度)</div>";SubstrMenu += "<div class=\\"menuitems\\" onClick=\\"window.open('http://www.baidu.com/s?wd="+cb+"','_self')\\">查“"+cb+"”的重点客户(百度)</a></div>";SubstrMenu += "<hr>";SubstrMenu += "<div class=\\"menuitems\\" onClick='hidemenu()'>隐藏此菜单</a></div>";menu.innerHTML = SubstrMenu;showmenu();return false;}</SCRIPT>另外,为了更好的显示效果,还可以增加css样式来进行控制,将如下样式同样加入到jsp页面中:<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>这样,在浏览器端就能够实现在单元格上鼠标右键跳转到不同的链接地址:![3jpg](http://img.raqsoft.com.cn/file/2019/02/5f5eee9a5bdd40e69b56d4e45254f31d_3.jpg)注:本例链接地址设置到了百度,实际中跳转可以自行根据实际需求在js中进行设置。##### 总结:本例中通过报表的HTML事件属性实现了单元格的右键跳转到不同的链接地址,报表中除了右键属性外,还支持其他的一些触发事件操作,具体可以参考报表帮助文档:http://doc.raqsoft.com.cn/report/preference/cfsj170.html

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('http://www.baidu.com/s?wd="+cb+"','_self')\\">查“"+cb+"”的所有客户(百度)</div>"; SubstrMenu += "<div class=\\"menuitems\\" onClick=\\"window.open('http://www.baidu.com/s?wd="+cb+"','_self')\\">查“"+cb+"”的重点客户(百度)</a></div>"; SubstrMenu += "<hr>"; SubstrMenu += "<div class=\\"menuitems\\" onClick='hidemenu()'>隐藏此菜单</a></div>"; menu.innerHTML = SubstrMenu; showmenu(); return false; } </SCRIPT> 另外,为了更好的显示效果,还可以增加css样式来进行控制,将如下样式同样加入到jsp页面中: <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> 这样,在浏览器端就能够实现在单元格上鼠标右键跳转到不同的链接地址: ![3jpg](http://img.raqsoft.com.cn/file/2019/02/5f5eee9a5bdd40e69b56d4e45254f31d_3.jpg) 注:本例链接地址设置到了百度,实际中跳转可以自行根据实际需求在js中进行设置。 ##### 总结: 本例中通过报表的HTML事件属性实现了单元格的右键跳转到不同的链接地址,报表中除了右键属性外,还支持其他的一些触发事件操作,具体可以参考报表帮助文档:http://doc.raqsoft.com.cn/report/preference/cfsj170.html

如何通过报表单元格右键控制报表跳转到不同链接地址相关推荐

  1. 如何用vba在单元格右键快捷菜单中添加自定义的菜单命令

    如下图所示,当鼠标右键单击excel工作表中的单元格时,将会弹出单元格右键快捷菜单. 虽然从excel 2007开始 微软引进了ribbon 功能区来代替excel 常规菜单栏,但是像上图所示的鼠标右 ...

  2. 为什么有时候双击excel表格里面的单元格的时候会跳到其它地方?

    为什么有时候双击excel表格里面的单元格的时候总会跳到其它地方? 原因:双击时鼠标在两个单元格的边框或是四个单元格的交叉点上. 解决方法:关闭"启用填充柄和单元格拖放"功能,选项 ...

  3. java设置单元格格式_java报表开发之单元格格式设置

    // 设置水平居中 style = style.deriveHorizontalAlignment(Constants.CENTER); 1.6 设置单元格边框 设置边框样式和边框颜色 style = ...

  4. 润乾报表 -根据登录用户控制报表展现效果(动态宏)

    新建一张空白报表 1.首先进行参数和宏的设置. [报表属性]->[参数定义]如图: 我们的目的是根据登录的用户不同,在arg1(sys_UserID)中获取不同的值,来选择要进行过滤的字段,例如 ...

  5. 解决EXCEL中选中单元格右键被屏蔽的问题

    有的时候,我们打开一个从网上下载的XLS文件,会导致原来的EXCEL菜单发生改变或者某些布局改变以及某些功能如右键菜单被屏蔽等等,这是由于部分XLS文件,需要特殊的功能,所以,在这些文件里面,通常包含 ...

  6. 对于ALV LVC 单元格的控制

    需求是:当数据不符合条件时,不可编辑,反之,可编辑 主要实现的技术:  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' 代码如下: " 数据声明 显示A ...

  7. abap al设置单元格可编辑 oo_润乾报表美化设置 -- 样式

    在制作报表时,报表设计人员经常遇到下面这些美化报表的问题: 为什么我做出的报表领导总觉得不好看不满意 美化一张报表要设置太多的格式和属性,那么多报表都得重复设置,真繁琐 系统中不同人做出的报表展现格式 ...

  8. POWERSHELL基于ConvertTo-Htm指定单元格效果css风格html报表

    基于ConvertTo-Htm的css风格和指定单元格效果html报表的生成 PowerShell本身具有一个简单但是很实用的命令 ConvertTo-Htm,可以把整个对象转换成HTML格式.事实上 ...

  9. ajax给表格填值,填报表用ajax实现关联单元格自动填充

    在做填填报表用ajax实现关联单元格自动填充">报表.如果是简单的加减乘除运算,可以在单元格的自动计算里面实现:如果关联单元格显示的内容是从数据库中取出来的,就不能写加减乘除表达式来实 ...

最新文章

  1. 魅族建立基于M8的Android开源项目
  2. 基于MATLAB的IIR滤波器设计与实现
  3. java面试难吗_面试两个月,整理了今年的最新java面试题,你看行吗?
  4. java socket 一边关闭_java socket - 半关闭
  5. weblogic与sitemesh乱码问题
  6. 零基础初学c语言常见的10个错误
  7. Spring中BeanFactory和FactoryBean的区别
  8. visual studio快捷键总结
  9. ajax,training my javascript!手写AJAX,用POST方法传值
  10. 产生一定范围随机数的通用表达式
  11. 三维重建(SFM):图像形变对重建的影响与优化
  12. 中级软件设计师考试(软考中级)设计模式分类及其典型特点
  13. 火车头采集html5游戏,火车头采集工具Wed发布配置方法
  14. BNNVGG3-BNN Net
  15. C语言常量 变量与作用域
  16. 阿里实名认证Java版(详细教程)
  17. 河南省周口市安吉软件测试培训中心第一次软件测试课程——测试理论考试(含答案)
  18. 入驻宣言:凡所见,皆可杀
  19. 努力学习打卡Day03
  20. [FLASH在线游戏]圆桌武士

热门文章

  1. NLP数据科学家不会告诉你的残酷事实
  2. 如何设计和管理AI产品?
  3. 如何正确实施人工智能
  4. SAP MM 标准采购组织的分配对于寄售采购订单收货的影响
  5. 人工智能应用中有这八大不可轻忽的弱点
  6. CNN在中文文本分类的应用
  7. 条件随机场CRF HMM,MEMM的比较
  8. 城市生态的机器人革命
  9. 日本精密减速器,到底牛在哪?
  10. 灵魂出窍的神经生物学基础!