2.1 准备数据

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

2.2 设计表格

如下图设计填报模板的表格样式,其中 A3 单元格的左父格为 B3。

A2、A3 单元格中添加「复选按钮控件」,C1、D1、E1、F1、G1、C3、D3、E3、F3、G3 单元格中添加「文本控件」,H5单元格添加按钮控件。

给A3的复选按钮控件设置控件名称:box。该名称可自定义,但如果修改了此名称,后续JS代码中的控件名称box也需要同步修改。

2.3 全选功能实现

1)选中 A2 单元格(全选复选框),添加一个状态改变事件,如下图所示:

JavaScript 代码如下:var flag = this.getValue();

//获取当前值

var boxes = _g().getWidgetsByName("box");

//获取当前页的复选按钮控件数组

if (typeof(boxes[0]) != "undefined") {

for (i = 0; i < boxes.length; i++) {

var cr=FR.cellStr2ColumnRow(boxes[i].options.location);

//获取行列号对象

_g().setCellValue(0,cr.col,cr.row,flag);

//如果控件大于1个,则遍历赋值

}

} else {

var cr=FR.cellStr2ColumnRow(boxes.options.location);

//获取行列号对象

_g().setCellValue(0,cr.col,cr.row,flag);

//如果控件只有1个,则直接赋值

}

2)选中 A3 单元格(单选复选框),添加一个状态改变事件,如下图所示:

JavaScript 代码如下:

var isAllChecked = true;

//设置标记状态为选中

var boxes = _g().getWidgetsByName("box");

//获取当前页的复选按钮控件数组

if (typeof(boxes[0]) != "undefined") {

for (i = 0; i < boxes.length; i++) {

isAllChecked = boxes[i].getValue() == true ? isAllChecked : false;

//如果控件大于1个,则遍历获取值,一旦出现未选中状态的按钮,则将标记值改为false

}

} else {

isAllChecked = boxes.getValue();

//如果控件只有1个,则直接获取控件值,并传给标记值

}

_g().setCellValue(0, 0, 1, isAllChecked);

//将标记值赋给A2单元格

3)通过上面的设置,可以在点击全选复选框时,实现底下所有复选框被选中;取消全选,所有的复选框全不选。但是存在一个问题,当使用了填报分页时,翻页后全选按钮的状态不会更新,此时需要在A2单元格(全选复选框),添加一个初始化后事件来解决。

JavaScript 代码如下:setTimeout(function() {

var isAllChecked = true;

//设置标记状态为选中

var boxes = _g().getWidgetsByName("box");

//获取当前页的复选按钮控件数组

if (typeof(boxes[0]) != "undefined") {

for (i = 0; i < boxes.length; i++) {

isAllChecked = boxes[i].getValue() == true ? isAllChecked : false;

//如果控件大于1个,则遍历获取值,一旦出现未选中状态的按钮,则将标记值改为false

}

} else {

isAllChecked = boxes.getValue();

//如果控件只有1个,则直接获取控件值,并传给标记值

}

_g().setCellValue(0, 0, 1, isAllChecked);

//将标记值赋给A2单元格

}, 50)

2.4 批量删除行功能实现

选中 H5 单元格(按钮控件),添加一个点击事件,如下图所示:

JavaScript 代码如下:var boxes = _g().getWidgetsByName("box");

//获取当前页的复选按钮控件数组

var cells = [];

if (typeof(boxes[0]) != "undefined") {

for (i = 0; i < boxes.length; i++) {

if (boxes[i].selected()) {

cells.push(boxes[i].options.location); //如果控件大于1个,则遍历判断是否选中,将选中的控件所在的单元格编号塞进数组中

}

}

} else {

if (boxes.selected()) {

cells.push(boxes.options.location);

//如果控件只有1个,则直接判断是否选中,选中的话把单元格编号塞进数组中

}

}

_g().deleteRows(cells);

//根据单元格编号删除行

注:批量删除行功能不支持移动端

2.5 批量修改功能实现

给C1、D1、E1、F1、G1单元格的控件,添加编辑结束事件,如下图所示:

JavaScript 代码如下:var boxes = _g().getWidgetsByName("box");

//获取当前页的复选按钮控件数组

var value = this.getValue();

//获取当前控件值

if (typeof(boxes[0]) != "undefined") {

for (i = 0; i

if (boxes[i].getValue() == true) {

var row = FR.cellStr2ColumnRow(boxes[i].options.location).row;

//获取行号

var col = FR.cellStr2ColumnRow(this.options.location).col;

//获取列号

_g().setCellValue(0, col, row, value);

//如果控件大于1个,则遍历修改选中行当前列的值

}

}

} else {

if (boxes.getValue() == true) {

var row = FR.cellStr2ColumnRow(boxes.options.location).row;

//获取行号

var col = FR.cellStr2ColumnRow(this.options.location).col;

//获取列号

_g().setCellValue(0, col, row, value);

//如果控件只有1个,则直接判断是否选中,选中的话修改当前列的值

}

}

2.6 效果预览

保存模板,点击填报预览。

PC 端效果如下所示:

移动端效果如下所示:

html 复选按钮 全选,JS实现复选按钮控件全选和批量操作相关推荐

  1. easyui datagrid 控件全选

    easyui datagrid 控件全选 在datagrid控件中全选功能都是easyUI给做好的,只需要将负责全选的复选框设置下面的这个属性为false属性即可全部选中 singleSelect:f ...

  2. jQuery - 通过文本描述设置选择控件的选定值

    本文翻译自:jQuery - setting the selected value of a select control via its text description I have a sele ...

  3. C# mschart 控件 框选 删除部分数据 及游标CursorX CursorY 使用

    C# mschart 控件 框选 删除部分数据 实现功能 : 1.鼠标框选,选中chart控件中部分数据: 2.将选中的数据标红显示: 3.删除选中的红色数据: demo源码下载:https://gi ...

  4. 用html+css+js实现一个无限级树形控件

    题目描述: 用html+css+js实现一个无限级树形控件,功能如下: 1.利用html.css展示一个树形菜单 2.点击箭头图标展开子项 3.点击父节点勾选图标能全选或全取消,点击叶节点勾选图标可以 ...

  5. OCX控件全屏、恢复

    本文实现了在OCX控件上双击鼠标,控件全屏,再次双击鼠标,控件恢复原始状态的功能. 1.首先需要创建一个MFC的OCX控件,比如:MFCActiveXControl1. 2.在头文件中增加全屏.恢复需 ...

  6. ocx js php,JavaScript_JS实现OCX控件的事件响应示例,JS支持OCX控件的事件(event), - phpStudy...

    JS实现OCX控件的事件响应示例 JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自 ...

  7. C# WinForm中 让控件全屏显示的实现代码

    夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...

  8. QT实现Qt Quick和three.js渲染和实现QML3D控件

    QT实现Qt Quick和three.js渲染和实现QML3D控件 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 结合Qt Quick和three.js渲染. 演示 ...

  9. uniapp 判断页面是否是横竖屏,解决微信小程序video组件全屏播放视频遮盖自定义播放控件问题

    如果res.deviceOrientation 等于landscape 的话是竖屏,portrait则是横屏.因为用户每旋转一次屏幕就会触发里面的onShow钩子,因此在页面显示或横竖屏变化都会触发这 ...

  10. js动态添加控件服务器响应,JS实现动态给标签控件添加事件的方法示例

    本文实例讲述了JS实现动态给标签控件添加事件的方法.分享给大家供大家参考,具体如下: /p> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-trans ...

最新文章

  1. 快手王华彦:端上视觉技术的极致效率及其短视频应用实践 | AI ProCon 2019
  2. KS003基于JSP和Servlet实现的商城系统
  3. 一起玩树莓派3+使用Gitlab搭建专业Git服务
  4. make it a chorus笔记
  5. java反编译工具jd-gui
  6. 64位linux安装mysql数据库吗_linux下怎么安装mysql数据库
  7. 使用wget命令镜像网站
  8. SqlServer修改密码后登陆不上
  9. python 从入门到实践_Python编程从入门到实践日记Day36
  10. 计算机软件故障及其处理方法,计算机常见软件故障及其解决方法
  11. 网站跳出率高怎么解决?
  12. 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
  13. 设计的萌芽阶段_第一章 设计的萌芽阶段 第一节 设计概念的产生
  14. 双非一本考研国防科技大学计算机,【收藏】40所不歧视本科 保护一志愿院校 含多所985/211!...
  15. 一文带你深入了解,什么是深度学习及其工作原理
  16. 41. 如何手动触发全量回收垃圾,如何立即触发垃圾回收
  17. 基于Matlab对大米计数的研究
  18. 360打开html乱码怎么办,360浏览器出现乱码怎么回事_360浏览器页面乱码如何解决-win7之家...
  19. php蓝奏云网盘源码,蓝奏云网盘打开目录/上传/下载源码
  20. 基于SUSAN算法的边缘检测方法研究(Matlab代码实现)

热门文章

  1. Power BI中的填充功能
  2. Android 使用MediaPlayer播放本地raw资源超简单实现点击播放效果
  3. 如何证明二元函数的连续性 可…
  4. 股票技术指标atr是什么含义_股票技术指标公式详解K线图分析
  5. mysql UNIX_TIMESTAMP时间差
  6. 35个非常有创意的 Flash 网站作品欣赏
  7. 加载.npz文件时,出现错误:OSError: Failed to interpret file ‘xxx.npz‘ as a pickle
  8. 【Tensorflow】op的理解和自定义损失函数
  9. electron 自动更新 热跟新
  10. linux 开发工具集合