报表知识库
我要提问

行式填报表删除某行流水号更新方法

流水号其实是自动计算的一种,是一种特殊的自动计算。它是按照一定的递增或者递减规则,在当前值的基础上进行递增或者递减后算出来的值。因此,流水号在刚开始有一个初值,即第一次计算前的当前值。以后就把每一次计算出的新值作为当前值。


我们在实际应用中,遇到这样一种情况,当在页面中删除一行时,想让流水号重新计算,例如之前流水号是1.2.3.4.5,删除第3行后,当前页面流水号自动变为1,2,3,4。


下面我们来介绍一下如何来实现这个功能。


首先,制作一张带有流水号的行式填报表:



更新属性设置:



流水号初值设定:



流水号单元格的自动计算设置:



接着,我们需要编写一下页面的js函数,来完成自动更新流水号的过程:


    function _updateVar(){  //获取当前单元格的原值与新值
 var oldvalue=”";  //单元格修改前的原值
 var tableRowNum = document.getElementById( “report1″ ).rows.length;
 if(report1.currCell){
  //取选中单元格的原值
  oldvalue=report1.currCell.value;
  
  var editValue = oldvalue;
  //当前单元格的id
  var currId = report1.currCell.id;
  //取得当前行号
  var currRowNum = currId.substr(9,10);
    
   //循环的行数
   var forLength = tableRowNum – currRowNum;
  
   for (var i = 0;i< forLength;i++){
   //将更新后的流水号计算出来
   var cellN = parseInt(currRowNum) + parseInt(i) + 1;
   var cell = document.getElementById( “report1_A”+cellN );
   var cellV = parseInt(editValue) + i;
   //设置更新后的流水号值
   _setEditingValue( cell, cellV.toString(), cellV.toString() );
  }
 }
 //删除行
 _deleteRow( report1 );
 
}


函数的原理就是,取得删除行的当前流水号,然后把当前行后面的行的流水号按照顺序重新设置一下,然后把选中的这行删除。


我们看一下页面中的效果:




 目前选中第三行,然后点按钮调用上面写的js:



我们看到,第四行到第六行的流水号重新计算并按顺序更新了。


这时点击提交即可保存数据了。