行式填报表如何复制选中行的数据

在行式填报表中,有插入,添加,删除数据的功能。有些时候客户希望点击“插入”或者“添加”按钮时,能复制选中行的数据。

下面我们一起来看一下如何实现这种效果:

首先设置一张行式填报表,设置其更新属性及单元格的可写属性为“可写”。

然后右键单击A3单元格,选择“填报属性”,在其流水号中写:getUuid(),注意:这里并不需要设置流水号。

然后一个发布报表的JSP,在该JSP中增加几个自定义按钮,如下图:

其中_insertRow123(report1)_appendRow123(report1)是我重写了一下report4.jar中已经封装好了的名为_insertRow(report1)_appendRoe(report1)js函数,如下图:

(我这里只是重新命名了一下,其余的都没变)

<script language=”javascript”>

 

function _insertRow123(table){

alert(‘插入行‘);//这句可要可不要

if( !_submitEditor( table ) ) return;

if( table.currCell == null ) {

alert( __UU );

return;

}

var row = table.currCell.parentElement;

if( !row.isDetail ) {

alert( __VV );

return;

}

var index = row.rowIndex;

while( !row.isFirst ) {

index–;

row = table.rows[ index ];

}

_copyRows( table, row, index );

_calcRowNoInGroup( table, row );

}

 

function _appendRow123(report1){

alert(“追加行“);//这句可要可不要

if( !table.isImport ) {

if( !_submitEditor( table ) ) return -1;

}

var index = -1;

if( table.appendIndex == null || table.appendIndex < 0 ) {

if( table.currCell == null ) {

alert( __WW );

return -1;

}

var row = table.currCell.parentElement;

if( !row.isDetail ) {

alert( __XX );

return -1;

}

index = row.rowIndex;

while( !row.isFirst ) {

index–;

row = table.rows[ index ];

}

table.baseRow = row; //要复制的记录的首行

var srcCell = row.cells[0].sc;

while( true ) {

index++;

var r = table.rows[ index ];

if( r == null ) {

index = -1;

break;

}

if( !r.isDetail ) break;

if( r.isFirst && r.cells[0].sc != srcCell ) break;

}

if( table.isImport ) table.appendIndex = index;

}

else index = table.appendIndex;

var rowno = _copyRows( table, table.baseRow, index );

if( table.isImport ) {

table.appendIndex = rowno + parseInt( table.baseRow.drows );

}

_calcRowNoInGroup( table, table.baseRow );

return rowno;

}

</script>

当点击“插入行”之后,报表会自动复制所选中行的数据,如下图:

说明:插入行是选中行的下一行进行复制,追加行是在报表的最后一行复制所选中行的数据。

热门文章