插入删除行重新编号
1. 问题描述
在录入数据时,希望数据库中的某列数据是1,2,3...这样的自动增长的数字编号,插入一条数据时编号自动+1,删除数据时编号自动-1。
2. 实现思路
通过seq()函数给数据编号,seq()函数是返回报表执行过程中该函数执行的次数;添加填报事件,对进行过删除行或添加行操作的报表重新编号。
3. 示例
3.1 打开模板
打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm3.cpt。
3.2 修改表样
3.3 自动编号设置
清空B3单元格的值,并在A3单元格输入一个固定值,比如说输入X,设置其扩展属性为纵向扩展,然后在B3单元格中输入公式=seq(A3),父格设置为C3,其意义是,对A3组内的所有数据按照C3进行编号。如下图:
注:a3单元格的固定值是用来分组的,如果不想其显示在模板中,可将A列进行隐藏。
3.4 插入行策略
选中B3单元格,在单元格属性表处选择其他属性>插入行策略,插入行策略选择原值,如下图:
3.5 填报页面事件设置
点击模板>模板Web属性>填报页面设置,增加删除行前事件,设置一个删除行标记变量,window.deleteflag=1;
增加添加行前事件,设置一个添加行标记变量,window.appendflag=1;
增加加载结束事件,检测到由于删除行或添加行引起的页面加载的话,就进行重新编号,避免页面初始化后的页面加载结束事件的重复编号。
if(window.deleteflag==1||window.appendflag==1){//如果是删除或者添加标记的,重新编号
var $tds=$('.x-table td[col=1]:visible');//获取第2列中可见的单元格(B列)
var n=0;
$tds.each(function(i,e){
if(i>=2){//模版中从哪一可见行开始编号的,行号是从0开始的,所以用行号-1,比如这个模板是从第3行开始的,就是2
n=n+1;
$(e).text(n);//将当前编号重新设置
}
});
window.deleteflag=0;//清除删除行标记
window.appendflag=0;//清除添加行标记
}
3.6 保存预览
点击
,预览报表,如下图:点击
按钮,产品编号自动+1,如下图:点击刚刚插入的行后面的
按钮,产品编号会自动-1,如下图:在线查看模板效果请点击LineForm4.cpt
已完成模板请参照%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm4.cpt
关键字:序号自动加减,自动编号
附件列表
主题: 填报应用
标签:
已验证