最近做报表有个批量删除的需求,这也是个比较常用的功能,在此记录下(PS:我使用的是9.0和10.0版本)
参考帆软帮助文档https://help.finereport.com/doc-view-533.html
最终效果如下,此处我选择点击删除后再点击提交按钮提交到数据库,并不是点击删除后直接就提交
数据用的FRDemo.db 的SALES_BASIC表
1、首先做出展示页面如下:
2、全选功能
首先定义一个参数来判断是否点击了全选,在参数栏拖一个文本框,名称为flag,去掉可用和可见属性,默认值为false,false表示没全选,true表示全选;
(2021-06-18补充) 全选按钮名称记得设置为is_all
在全选按钮下添加点击事件,代码如下:
var flag=contentPane.parameterEl.getWidgetByName("flag").getValue();
if(flag=="false"){
//我这里前两行加了冻结,所以有#frozen-center,如果不加冻结使用下面的代码获取不到复选框
var $span = $('#frozen-center .fr-checkbox-checkoff'); //没有选中的复选框
//alert($span.length);
$span.removeClass("fr-checkbox-checkoff");
$span.addClass("fr-checkbox-checkon");
contentPane.parameterEl.getWidgetByName("flag").setValue("true");
contentPane.getWidgetByName("is_all").setValue("取消全选");
}else{
//var $span = $('.fr-checkbox-checkon');
var $span = $('#frozen-center .fr-checkbox-checkon'); //选中的复选框
$span.removeClass("fr-checkbox-checkon");
$span.addClass("fr-checkbox-checkoff");
contentPane.parameterEl.getWidgetByName("flag").setValue("false");
contentPane.getWidgetByName("is_all").setValue("全选");
}
3、删除
删除按钮添加点击事件,代码如下:
FR.Msg.confirm("提示","确认删除所选项?",function(flag){
if(flag){
var $span = $('.fr-checkbox-checkon'); //定义选中的复选框
var darray = [];
var $tds = $("td").has($span); //定义选中复选框的单元格
for (var i = 0, len = $tds.length; i < len; i ++) { //遍历选中的单元格
var id = $($tds[i]).attr("id"); //给选中的单元格加上id的属性
if (id) {
darray.push(id); //将选中的id放入到数组中
}
}
contentPane.deleteReportRC(null,darray); //第二个参数为批量删除的选中行
//contentPane.writeReport(); //提交至数据库,此处我没用,我选择默认的点击提交按钮提交
contentPane.parameterEl.getWidgetByName("flag").setValue("false");
}else{
return false;
}
})
4、现基本实现,优化,在每次点击查询后重置flag为false,所以在查询按钮添加点击事件
contentPane.parameterEl.getWidgetByName("flag").setValue("false");
_g().parameterCommit();
最后附上一个demo https://download.csdn.net/download/baidu_35267690/19713933