最近做报表有个批量删除的需求,这也是个比较常用的功能,在此记录下
参考帆软帮助文档https://help.finereport.com/doc-view-533.html
最终效果如下,此处我选择点击删除后再点击提交按钮提交到数据库,并不是点击删除后直接就提交
数据用的FRDemo.db 的SALES_BASIC表
1、首先做出展示页面如下:
2、全选功能
首先定义一个参数来判断是否点击了全选,在参数栏拖一个文本框,名称为flag,去掉可用和可见属性,默认值为false,false表示没全选,true表示全选;
在全选按钮下添加点击事件,代码如下:
-
var flag=contentPane.parameterEl.getWidgetByName(
"flag").getValue();
-
if(flag==
"false"){
-
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();