在实际的项目开发中,填报表的应用十分广泛。

多数情况下,填报表会作为整个项目的一部分配合需求灵活使用,但有时也会受大项目环境的影响,产生一些特别的要求。比如,通常报表单元格的数据类型大多是文本,有时却需要借助 HTML 或者 JavaScript 实现一些交互效果,例如在报表中添加一些说明性的提示、自定义功能性按钮等。显然,单纯的文本数据类型不支持这种交互操作,那么我们就会想填报表是不是能够支持 HTML 数据类型的用法呢?如果支持又该怎么使用呢?

答案肯定是支持的(你懂得),下面我们就举个栗子:

实例一要求:

报表中增加说明提示框,供填报表格参考。

下面以报表工具自带报表 2.2.sht 为例,看一下如何应用 HTML。

实例报表如下:

要求效果:报表右上角定义按钮,点击按钮后弹出说明信息。

具体实现:

1. 在当前报表的基础上新增行,如下:

2. 填报表展现页面(此实例为:previewInput.jsp)中,定义 String sgid=""; 且将 String sgid = InputTag.getInputId();  修改为 sgid = InputTag.getInputId();,如下:

最后在 jsp 末尾的标签内添加 js 方法代码如下:![]

其中:

abc() 方法 指定具体的弹出信息及方式;

cell 变量 获取触发 abc()方法的单元格,并通过 $(cell).html() 定义具体的 html 事件。

效果:(动图)

实例二要求

在行式填报表单元格中自定义按钮,点击后可以插入行。

这里之所以不直接应用自带的工具条按钮,是因为报表应用与项目集成后会屏蔽应用自带的工具条。

这里还是以报表工具自带报表 2.2.sht 为例,演示一下怎么在报表中调用报表工具内置的方法。

具体实现:

1. 明确报表中需要自定义的按钮所要执行的操作;

这里以自定义插入行为例。

2. 找出对应的方法;

插入行:_insertRow()删除行: _deleteRow() 追加行: _appendRow()

导出 excel: _inputDownloadExcel()导入 excel: _inputLoadExcelData()

因版本差异具体参考 inputtoolbar.jsp

3. 参照实例一修改 $(cell).html() 中具体触发的方法,如下:

效果:(动图)

温馨提示:

1. Jsp 中 39 行的部分必须重定义变量 String sgid=""; 且将 String sgid = InputTag.getInputId();  修改为 sgid = InputTag.getInputId(); 否则报表展现会出现类似如下报错:

2. $(cell).html() 中涉及多组单引号和双引号时,注意使用转移符 \ 以保证 js 正确解析。

课外知识扩充:

文本类型是单元格默认的数据类型,我们在报表单元格里使用最多的就是这种类型。如果单元格的类型为“文本”,系统就把单元格中的字符、数字或表达式的计算结果都当成文本来处理。

HTML**** 类型是超文本标记语言,一个 HTML 文件不仅包含文本内容,还包含一些标记。 如果报表中需要用到一些标记,但单元格不支持这种标记,这时就可以把单元格的类型设置为“html”类型,在单元格中嵌入 html 标记,通过 html 类型可以在单元格中显示单元格本身不支持的标记信息。html 类型还有一个用途是可以在单元格中嵌入隐藏的 javascript 函数,如果报表中多处都用到同一个 js 函数,我们可以把一个隐藏单元格设置为 html 类型,在此单元格中定义 js 函数,供其他单元格引用,这样就可以给用户的报表设计带来很大方便。

填报表中也可以添加 html 事件的更多相关文章

  1. Silverlight中文本框添加回车事件后,换行无法清除的解决方法

    在开发Silverlight的项目中,为了更好的用户体验,我们常要给一些控件添加一些快捷键.然而,在Silverlight中当用户回车提交后,光标停留在文本框的第二行怎么也清除不掉,经过一段时间研究, ...

  2. 在WPF的DataGrid中对行添加单击事件

    在做的一个c#的项目中发现Datagrid没办法直接对鼠标单击进行响应,调用MouseDown事件也需要点击某一行第二次才能响应.所以借助EventSetter来简单的实现了一个. 界面部分的代码 & ...

  3. 润乾报表JSF FORM 标签中使用填报表解决方案

     需求 润乾报表的标签需要在jsf页面中和其他填报控件一起使用,润乾报表负责展现录入部分数据,并且这部分数据和页面的其它控件的数据存在前台和后台的交互. 问题 润乾报表在前台会生成自己的form, ...

  4. ABAP QUERY报表添加双击事件

    问题:一个query报表程序,客户想要每一条能编辑并打印. 解决:直接给query添加双击事件,调用新report. 1.创建report,用paramater定义要从query结果中传过来的数据. ...

  5. ActiveReports 区域报表中的事件介绍

    1.仅触发一次的事件 以下是在报表的处理过程中仅触发一次的所有事件这些事件在报表的处理周期中仅在最开始和结束前触发一次. ReportStart 该事件在DataInitialize事件触发之前发生. ...

  6. iOS开发小技巧 - label中的文字添加点击事件

    Label中的文字添加点击事件 GitHub地址:https://github.com/lyb5834/YBAttributeTextTapAction 以前老师讲过类似的功能,自己懒得回头看了,找了 ...

  7. asp.net中的ListBox控件添加双击事件

    问题:在Aspx页里的ListBox A中添加双击事件,将选中项添加到另一个ListBox B中,双击ListBox B中的选中项,删除当前选中项 页面: <asp:ListBox ID=&qu ...

  8. 给ul中的li添加事件的多种方法

    给ul中的li添加事件的多种方法 这是一个常见,而且典型的前端面试题 <ul> <li>11111</li> <li>22222</li> ...

  9. Android向系统日历中添加日程事件

    转自Android向系统日历中添加日程事件 总结 在项目开发中,我们有预约提醒.定时提醒需求时,可以使用系统日历来辅助提醒: 通过向系统日历中写入事件.设置提醒方式(闹钟),实现到时间自动提醒的功能: ...

  10. jq动态添加onclick事件在谷歌中不起作用

    $("#oa-bed-rooType").append($('<option/>').val(0).text('请选择房间类型')); $('#oa-bed-roomT ...

随机推荐

  1. 记一次 .NET某设备监控自动化系统 CPU爆高分析

    一:背景 1. 讲故事 先说一下题外话,一个监控别人系统运行状态的程序,结果自己出问题了,有时候想一想还是挺讽刺的,哈哈,开个玩笑,我们回到正题,前些天有位朋友找到我,说他们的系统会偶发性CPU爆高, ...

  2. Redis队列优先级的实现方案

    场景 通常使用 list 来实现队列操作,所有的任务统一都是先进先出的原则,如果想优先处理某个任务就不太合适,这个时候就需要让队列有优先级的概念,实现方式有以下两种方式: 单一列表实现 队列正常的操作 ...

  3. python AI应用开发编程实战 大模型实战基础(数据存储类型列表与字典)(二)

    大模型开发中,需要和自己的业务融合,我们要对自己的数据处理,熟悉外理excle  word  pdf 数据然后处理后可以放到向量数据库,或者直接Assistants API传到大模型引用,不管怎么样数 ...

  4. matting tool by cs - 视频扣绿幕 1.4 - 软件推荐

    本地软件,还没用,先留个档,试试 第一个下载还套了个广告壳,醉了,但是能用 https://www.123pan.com/s/X3jA-POMQv 这个装了,是原版,没套壳 https://pan.b ...

  5. InputNumberZen.vue 数字输入 支持两位小数

    <template> <span style="width: 200px; display: inline-block;"> <Input v-mod ...

  6. SourceTree 摘樱桃 === 遴选 [不要使用这个功能!!不要使用!不要使用!]

    SourceTree 摘樱桃 === 遴选 不要使用摘樱桃!!不要使用!不要使用! 我找了一个文本的git,进行的测试,发现很不好用,文档我又恢复过来了,因为就改了几个字,代码的话,会造成 不可挽回的 ...

  7. PlayBook 详解

    4)Playbook 4.1)Playbook 介绍 PlayBook 与 ad-hoc 相比,是一种完全不同的运用 Ansible 的方式,类似与 Saltstack 的 state 状态文件.ad ...

  8. 投屏Sink端音频底层解码并用OpenSLES进行播放

    一.代码分析 在公司项目中,音频解码及播放是把数据传到Java层进行解码播放的,其实这个步骤没有必要,完全可以在底层进行处理. 通过代码发现其实也做了在底层进行解码,那么为啥不直接使用底层解码播放呢, ...

  9. AABO:自适应Anchor设置优化,性能榨取的最后一步 | ECCV 2020 Spotlight

    论文提出超参数优化方法AABO,该方法核心基于贝叶斯优化和Sub-Sample方法,能够自适应的搜索最优的anchor设置.从实验结果来看,AABO能够仅通过anchor设置优化,为SOTA目标检测方 ...

  10. 浅谈 KingbaseES 和 SQLServer 中的 instead of 触发器

    本文基于Kingbase和SqlServer的INSTEAD OF 触发器主要功能特点进行对比浅析,同时针对SqlServer 的INSTEAD OF 触发器提出了多种kingbase环境的等价代码方 ...