行式填报表在删除数据时弹出提示

在报表中,如果将报表设置成行式填报表,那么我们可以对数据进行插入,添加,删除等操作。点击“删除”按钮的时候,会直接将数据删除掉。有时候可能会不小心点到了“删除”按钮,将不想删除的数据给删除掉了。这种情况会让人很苦恼,在操作的时候也没那么随心所欲。

为了避免这种情况,我们需要在删除数据的时候,弹出一个对话框进行提示:是否确定删除该数据?

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

在一张填报表做好之后,修改一下发布报表的JSP。在其中添加一个自定义按钮“自写行删除”,如下图

1

这个按钮调用的是_deleteRow123(report1)这个js函数。

_deleteRow123(report1)方法如下:

function _deleteRow123( table ) {

if(confirm(“确定删除吗?“)==true){

if( table.currCell == null ) {

alert( __AAA );

return;

}

var row = table.currCell.parentElement;

if( !row.isDetail ) {

alert( __BBB );

return;

}

var oldCellIndex = table.currCell.colNo;

var index = row.rowIndex;

var currCellRowIndex = index;

while( !row.isFirst ) {

index–;

row = table.rows[ index ];

}

findRowNoInGroup( table, row );

var deltaIndex = currCellRowIndex – index;

var drows = parseInt( row.drows );

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

var firstIndex = index, tmpIndex = index;

var details = 1;

while( true ) { //查找本扩展区的第一条记录的首行

if( tmpIndex == 0 ) break;

tmpIndex–;

var r = table.rows[ tmpIndex ];

if( !r.isDetail ) break;

if( r.isFirst ) {

if( r.cells[0].sc == srcCell ) {

firstIndex = tmpIndex;

if( !r.deleted ) details++;

}

else break;

}

}

var lastIndex = index;

tmpIndex = index;

while( true ) { //查找本扩展区的最后一条记录的首行

tmpIndex++;

var r = table.rows[ tmpIndex ];

if( r == null || !r.isDetail ) break;

if( r.isFirst ) {

if( r.cells[0].sc == srcCell ) {

lastIndex = tmpIndex;

if( !r.deleted ) details++;

}

else break;

}

}

if( details == 1 ) { //最后一条明细了,需要先复制一个空明细

table.currEditor = null;

_copyRows( table, row, index );

index += drows;

}

for( var i = 0; i < drows; i++ ) {

row = table.rows[ index + i ];

for( var j = 0; j < row.cells.length; j++ ) {

row.cells[j].style.display = “none”;

}

row.deleted = true;

row.style.display = “none”;

}

if( details > 1 ) {

var currRow = null;

var n = index;

while( true ) { //往后搜索新的当前行

index += drows;

var r = table.rows[ index ];

if( r == null || !r.isDetail ) break;

if( r.style.display == “none” ) continue;

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

currRow = r;

break;

}

if( currRow == null ) { //往前搜索新的当前行

index = n;

while( true ) {

index -= drows;

var r = table.rows[ index ];

if( r == null || !r.isDetail ) break;

if( r.style.display == “none” ) continue;

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

currRow = r;

break;

}

}

currRow = table.rows[ currRow.rowIndex + deltaIndex ];

var currCell = null;

for( var k = 0; k < currRow.cells.length; k++ ) {

var c = currRow.cells[k];

if( c.colNo == oldCellIndex ) {

currCell = c;

break;

}

}

if( currCell != null ) {

table.currEditor = null;

_bindingEditor( currCell );

}

}

_calcTbl( table, row.cells[0] ); //删除一行时,重新计算相关组的统计值

_calcRowNoInGroup( table, row );

 

}

else{

return false;

}

 

}

如此设置之后,当点击“自写行删除”按钮时,会弹出一个对话框,询问是否确实要删除该数据,点击“确认”则删除该数据,点击“取消”则不删除该数据。如下图

热门文章