帆软报表实现填报勾选复选框批量删除和全选

一、背景需求

在优化填报录入流程时,我们考虑到了用户界面的友好性和操作的便捷性。原先,增加和删除记录的操作是通过点击按钮来实现的,这种逐一处理的方式在面对大量数据时显得既不高效也不美观。为了提升用户体验,我们引入了勾选行进行批量删除的功能。

现在,用户只需简单地勾选想要删除的记录行,然后点击一次删除按钮,就能一次性完成多条记录的删除操作。这种方式不仅极大地提高了工作效率,还使得整个操作界面更加整洁、直观。

 二、实现步骤

1.增加控件

  1. 在A2、A3单元格加入复选框按钮控件,将A3单元格左父格设置为C3(此处的目的为复选框跟随数据行扩展)
  2. 在A4单元格加入按钮控件
  3. 在B4单元格加入按钮控件,类型为插入一行,指定单元格为C3

2.添加事件 

在A2单元格控件添加事件初始化后和改变状态,js代码如下

初始化后——其中_g().setCellValue(0, 0, 1, isAllChecked);根据页签和单元格位置自行修改

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)

 改变状态——其中_g().setCellValue(0,cr.col,cr.row,flag);根据页签和单元格位置自行修改

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个,则直接赋值
}

在A3单元格控件添加事件改变状态

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单元格

在A4单元格添加事件点击

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);
//根据单元格编号删除行
//_g().verifyAndWriteReport(true);
//执行校验提交所有sheet,如有删除行时直接提交的需求,可以启用该句

 三、预览效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值