流水号其实是自动计算的一种,是一种特殊的自动计算。它是按照一定的递增或者递减规则,在当前值的基础上进行递增或者递减后算出来的值。因此,流水号在刚开始有一个初值,即第一次计算前的当前值。以后就把每一次计算出的新值作为当前值。
我们在实际应用中,遇到这样一种情况,当在页面中删除一行时,想让流水号重新计算,例如之前流水号是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:
我们看到,第四行到第六行的流水号重新计算并按顺序更新了。
这时点击提交即可保存数据了。
|