html 复选按钮 全选,JS实现复选按钮控件全选和批量操作
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实现复选按钮控件全选和批量操作相关推荐
- easyui datagrid 控件全选
easyui datagrid 控件全选 在datagrid控件中全选功能都是easyUI给做好的,只需要将负责全选的复选框设置下面的这个属性为false属性即可全部选中 singleSelect:f ...
- jQuery - 通过文本描述设置选择控件的选定值
本文翻译自:jQuery - setting the selected value of a select control via its text description I have a sele ...
- C# mschart 控件 框选 删除部分数据 及游标CursorX CursorY 使用
C# mschart 控件 框选 删除部分数据 实现功能 : 1.鼠标框选,选中chart控件中部分数据: 2.将选中的数据标红显示: 3.删除选中的红色数据: demo源码下载:https://gi ...
- 用html+css+js实现一个无限级树形控件
题目描述: 用html+css+js实现一个无限级树形控件,功能如下: 1.利用html.css展示一个树形菜单 2.点击箭头图标展开子项 3.点击父节点勾选图标能全选或全取消,点击叶节点勾选图标可以 ...
- OCX控件全屏、恢复
本文实现了在OCX控件上双击鼠标,控件全屏,再次双击鼠标,控件恢复原始状态的功能. 1.首先需要创建一个MFC的OCX控件,比如:MFCActiveXControl1. 2.在头文件中增加全屏.恢复需 ...
- ocx js php,JavaScript_JS实现OCX控件的事件响应示例,JS支持OCX控件的事件(event), - phpStudy...
JS实现OCX控件的事件响应示例 JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自 ...
- C# WinForm中 让控件全屏显示的实现代码
夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...
- QT实现Qt Quick和three.js渲染和实现QML3D控件
QT实现Qt Quick和three.js渲染和实现QML3D控件 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 结合Qt Quick和three.js渲染. 演示 ...
- uniapp 判断页面是否是横竖屏,解决微信小程序video组件全屏播放视频遮盖自定义播放控件问题
如果res.deviceOrientation 等于landscape 的话是竖屏,portrait则是横屏.因为用户每旋转一次屏幕就会触发里面的onShow钩子,因此在页面显示或横竖屏变化都会触发这 ...
- js动态添加控件服务器响应,JS实现动态给标签控件添加事件的方法示例
本文实例讲述了JS实现动态给标签控件添加事件的方法.分享给大家供大家参考,具体如下: /p> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-trans ...
最新文章
- 快手王华彦:端上视觉技术的极致效率及其短视频应用实践 | AI ProCon 2019
- KS003基于JSP和Servlet实现的商城系统
- 一起玩树莓派3+使用Gitlab搭建专业Git服务
- make it a chorus笔记
- java反编译工具jd-gui
- 64位linux安装mysql数据库吗_linux下怎么安装mysql数据库
- 使用wget命令镜像网站
- SqlServer修改密码后登陆不上
- python 从入门到实践_Python编程从入门到实践日记Day36
- 计算机软件故障及其处理方法,计算机常见软件故障及其解决方法
- 网站跳出率高怎么解决?
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- 设计的萌芽阶段_第一章 设计的萌芽阶段 第一节 设计概念的产生
- 双非一本考研国防科技大学计算机,【收藏】40所不歧视本科 保护一志愿院校 含多所985/211!...
- 一文带你深入了解,什么是深度学习及其工作原理
- 41. 如何手动触发全量回收垃圾,如何立即触发垃圾回收
- 基于Matlab对大米计数的研究
- 360打开html乱码怎么办,360浏览器出现乱码怎么回事_360浏览器页面乱码如何解决-win7之家...
- php蓝奏云网盘源码,蓝奏云网盘打开目录/上传/下载源码
- 基于SUSAN算法的边缘检测方法研究(Matlab代码实现)
热门文章
- Power BI中的填充功能
- Android 使用MediaPlayer播放本地raw资源超简单实现点击播放效果
- 如何证明二元函数的连续性 可…
- 股票技术指标atr是什么含义_股票技术指标公式详解K线图分析
- mysql UNIX_TIMESTAMP时间差
- 35个非常有创意的 Flash 网站作品欣赏
- 加载.npz文件时,出现错误:OSError: Failed to interpret file ‘xxx.npz‘ as a pickle
- 【Tensorflow】op的理解和自定义损失函数
- electron 自动更新 热跟新
- linux 开发工具集合