帆软填报多行批量删除

谁践踏了优雅 2022-10-28 03:52 749阅读 0赞

1. 概述

1.1 应用场景

行式报表填报删除时,如果需要删除的内容较多,一个个点击删除比较麻烦,如何实现下图所示的批量删除操作呢?

Snag\_3e5532f.png

1.2 实现思路

本文提供两种实现方法,但是思路是一致的,都是将所有勾选了复选按钮所在行的行号写进字符串数组,然后进行批量删除。

2. 示例

2.1 准备数据

新建普通报表,新建数据集 ds1,SQL 查询语句为:SELECT * FROM Sales

Snag\_451fd2d.png

2.2 设计表格

A2 单元格添加「按钮控件」,按钮名字设置为「删除勾选」。

A3 单元格添加「复选按钮控件」,左父格设置为 B3 。

B3~G3 单元格添加「文本控件」。

表格效果如下图所示:

Snag\_453edc2.png

2.3 设置填报属性

设计器菜单栏选择模板>报表填报属性,新增「内置 SQL」提交,具体设置如下图所示:

Snag\_290c37b2.png

2.4 方法一

1)选中 A3 单元格,右边属性面板选择控件设置>事件,点击「添加事件」,给复选按钮添加一个「初始化后事件」,如下图所示:

Snag\_291bfd9a.png

JavaScript 代码如下:

  1. if (!window.lineboxes) {
  2. window.lineboxes = [];//初始化数组
  3. }
  4. lineboxes[lineboxes.length] = this

2)选中 A2 单元格,右边属性面板选择控件设置>事件,点击「添加事件」,给复选按钮添加一个「点击事件」,如下图所示:

Snag\_291fe7eb.png

JavaScript 代码如下:

  1. if(window.lineboxes) {
  2. var cells = [];//建立空数组用于搜集勾选行号
  3. for (var i = 0; i < lineboxes.length; i++) {
  4. if (lineboxes[i].selected()) {//若复选框被勾选则执行以下
  5. //将第1个勾选行号写入数组0位置,将第2个勾选行号写入数组1位置……
  6. cells[cells.length] = lineboxes[i].options.location;
  7. }
  8. }
  9. contentPane.deleteRows(cells); //批量删除选中的记录
  10. setTimeout(function() {
  11. contentPane.writeReport(); //保存到数据库,实现的是工具栏中提交的操作
  12. }, 1000);
  13. }

显示代码

2.5 方法二

选中 A2 单元格,右边属性面板选择控件设置>事件,点击「添加事件」,给复选按钮添加一个「点击事件」,如下图所示:

Snag\_292b18d9.png

JavaScript 代码如下:

  1. var $span = $('.fr-checkbox-checkon'); //获取选中的复选框
  2. var darray = []; //新建一个数组用来存放选中的单元格所在的行号
  3. var $tds = $("td").has($span); //获取选中复选框所在的单元格,即选中的单元格
  4. for (var i = 0, len = $tds.length; i < len; i ++) { //遍历选中的单元格
  5. var id = $($tds[i]).attr("id"); //获取选中的单元格所在的行号
  6. if (id) {
  7. darray.push(id); //将选中的单元格所在的行号放入到数组中
  8. }
  9. }
  10. contentPane.deleteReportRC(null,darray); //第二个参数为行号
  11. setTimeout(function() { //增加延时函数(功能:需要删除的列较多时,复选框上面的删除
  12. contentPane.writeReport(); //勾选还未执行完成,就执行填报事件,填报时找不到行号,就会报错。
  13. }, 1000); //增加延时函数,保证在删除勾选事件执行完后,才执行填报事件)

显示代码

注:该方法 JS 代码不支持「新填报预览」。

2.6 效果预览

保存报表,点击「填报预览」或「新填报预览」,效果如下图所示:

222

注:不支持移动端。

3. 模板下载

1)方法一

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\行式填报批量删除-方法一.cpt

点击下载模板:行式填报批量删除-方法一.cpt

2)方法二

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\行式填报批量删除-方法二.cpt。

点击下载模板:行式填报批量删除-方法二.cpt

发表评论

表情:
评论列表 (有 0 条评论,749人围观)

还没有评论,来说两句吧...

相关阅读

    相关 填报后刷新界面

    1. 需求描述   当多窗口填报时,希望子窗口填报成功后,数据能马上在父窗口中显示出来,通常采用的方法是刷新父窗口,但现在触发刷新事件是在子窗口中,而父窗口又无法获取子

    相关 填报-插入删除

    1. 设计器内置插入删除按钮 设计器中默认的插入按钮是显示在工具栏中的,但是删除按钮却是默认不显示的,那么如何设置,在哪查看呢? 1)打开模板 打开设计器,新建一张模