反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

JS批量修改复选框选中行中某列的值

1. 概述

1.1 问题描述

填报报表中,有时需要选择一些记录后,批量修改这些记录的值,比如在审核报表中,同样情况的记录较多时,如果每行单独点击审批,会比较麻烦,这时就需要对选择的记录进行批量审批或批量取消审批。

如下图所示,复选框选择记录后,点击按钮即可批量修改中止列的值。

2020-12-04_10-30-55.gif

1.2 实现思路

利用 JS 对复选框进行遍历,判断是否选中,取选中的行号,再利用 contentPane.setCellValue(col,row,value)来进行批量设置。

2. 示例

2.1 打开模板

打开内置模板%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\LineForm7.cpt

点击可下载模板:LineForm7.cpt

打开模板,报表样式如下图所示:

image.png

2.2 添加按钮控件

右击 D1、F1 单元格添加「按钮控件」,D1 单元格按钮名字为「修改中止列的值为"真"」,F1 单元格按钮名字为「修改中止列的值为"假"」,如下图所示:

image.png

2.3 添加初始化事件

点击选中A3 单元格「复选按钮控件」,为复选框控件添加「初始化后」事件,记录已选中的数据行,如下图所示:

image.png

JS 代码如下:

//记录已选中的数据行
if (!window.lineboxes) {  
    window.lineboxes = [];  
}  
lineboxes[lineboxes.length] = this;

2.4 添加点击事件

1)点击选择 D1 单元格「按钮控件」,为按钮添加一个「点击」事件,事件内容为修改选中记录的中止列值为“真”,如下图所示:

image.png

JavaSccript 代码如下:

if(window.lineboxes) {  
     var cells = [];  
     for (var i = 0; i < lineboxes.length; i++) {  
     if (lineboxes[i].selected()) {  
 var cr=FR.cellStr2ColumnRow(window.lineboxes[i].options.location);  
 //获取勾选复选框所在行列  
 _g().setCellValue(10, cr.row, '真'); //逐一赋值,这里列号列序号,第一列是0,第2列为1,依次类推
         }  
     }    
     
}

2)同样方法为 F1 单元格「按钮控件」添加「点击」事件,JavaSccript 代码如下:

if(window.lineboxes) {  
     var cells = [];  
     for (var i = 0; i < lineboxes.length; i++) {  
     if (lineboxes[i].selected()) {  
 var cr=FR.cellStr2ColumnRow(window.lineboxes[i].options.location);  
 //获取勾选复选框所在行列  
 _g().setCellValue(10, cr.row, '假');  //逐一赋值,这里列号列序号,第一列是0,第2列为1,依次类推推
         }  
     }    
     
}

2.5 预览效果

保存模板,选择「填报预览」,效果如下图所示:

2020-12-04_10-30-55.gif

注:不支持移动端。

3. 模板下载

已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\14-JS批量修改复选框选中行中某列的值.cpt

点击下载模板:14-JS批量修改复选框选中行中某列的值.cpt

附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉