天天看点

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

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

我们在实际应用中,遇到这样一种情况,当在页面中删除一行时,想让流水号重新计算,例如之前流水号是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:
行式填报表删除某行流水号更新方法

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

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

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

继续阅读