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

编辑
  • 文档创建者:yets11
  • 浏览次数:6425次
  • 编辑次数:11次
  • 最近更新:Kevin-s 于 2019-12-06
  • 1. 概述

    1.1 问题描述

    场景描述:在某些情况中,需要对我们批量选择的记录修改其中某列的值,比如在批量审批报表应用中,会经常用到对选择的记录进行批量审批或批量取消审批,如果每行单独点击审批,会比较麻烦,我们可以在报表中利用 JS 来实现这一效果,效果如下:

    222

    1.2 实现思路

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

    2. 示例

    2.1 打开模板

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

    2.2 添加按钮控件

    右击 D1,F1 单元格添加按钮控件,一个按钮名称为批量中止,一个按钮名称为批量取消中止,如下图 D1 单元格 所示:

    image.png

    2.3 添加初始化事件

    右击 A3 单元格,弹出控件设置,为复选框控件添加初始化后事件,如下图:

    image.png

    JS 代码如下:

    if (!window.lineboxes) {  
        window.lineboxes = [];  
    }  
    lineboxes[lineboxes.length] = this;

    2.4 添加点击事件

    右击 D1 单元格,弹出控件设置对话框,为批量中止按钮添加点击事件,如下图所示:

    image.png

    JS 代码如下:


    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,依次类推
             }  
         }    
         
    }

    右击 F1 单元格,弹出控件设置对话框,为批量取消中止按钮添加点击事件,JS 代码如下:


    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 预览效果

    保存模板,选择填报预览,实现效果下图所示:

    222

    注:经过测试,手机端和 H5 不支持该效果。


    3. 模板下载

    模板效果在线查看请点击:JS 批量修改复选框选中行中某列的值.cpt

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

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


    附件列表


    主题: 二次开发
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]