又修复了用友A6 2.75的一个问题

今天又发现OA的一个问题:修改已经做好单据时,不能删除已有的重复表格的内容,但可以添加新行和删除刚添加的行。打售后服务执线反应,对方竟然说他那边测试没这问题。我晕,我用的可是用友公司的人上门拿来的安装盘,SP1也是官方网站下载的,居然跟他那边的不一样!!!

不知他要什么时候才解决,只能自己先搞了,哎,幸福全靠自己双手创啊~~

问题产生原因:
打开已有单据时,系统是通过客户端Javascript脚本再现单据的,其中有一个生成重复性表格(专业点说是主从表的从表)的过程(函数:init、initDetail),初始化函数中把从表的第一行应该设成是当前行,记录在变量currentRow中,然后调用setAbsolute(currentRow)函数把“添加删除重复行”的浮标显示在该行旁边。
添加行的时候是在第一行插入的(又一个bug,旧行会不断向下移,新行老插在旧行上)。
删除行时调用delRow函数进行删除,但delRow函数会检查是否在第一行,是则不允许删除(估计原意是保证从表必须有数据),结果呢,旧的行统统删除不了。

解决方法:
要解决问题就要修正currentRow的值,我采取方法的是监控从表点击事件,判断落在从表哪一行上,把它设成当前行。这样也存在一个问题,如果用户是通过键盘换行的,currentRow的值将不会变化,不过OA这样的WEB应用不用鼠标操作真不太现实。

修改的文件:
OA目录下common/js/form/form.js

修改内容:
在文件开头添加以下函数:

/* ***********************************************************************************************
修改单据时单据时,“删除/添加重复行”浮标默认显示在第一行,致使后面的内容无法删除
增加此函数在从表控件点击事件中动态调整浮标位置和currentRow,保证资料可随意删除(剩一行时不允许删除,由delRow函数限制)
此函数在initDetail函数中设置响应detail表onclick事件
彭国辉 2008-01-11
************************************************************************************************
*/
function  _setCurRow()
{
    
var  obj  =  window.event.srcElement;
    
while  (obj  &&  obj.tagName != " TR "   &&  obj.tagName != " TABLE "   &&  obj.tagName != " BODY " )
    {
        obj 
=  obj.parentNode;
    }
    
if  (obj  &&  obj.tagName  ==   " TR " )
    {
        
/* var tb = obj.parentNode;
        while (tb && tb.tagName!="TABLE")
          tb = tb.parentNode;
        alert(tb.name);
        if (tb.name == "detail")
        {
*/
            currentRow 
=  obj;
            setAbsolute(currentRow);
        
// }
    }
}

找到initDetail函数(有两个),在函数开头添加以下代码:

     // 设置detail表的onclick事件,动态调用_setCurRow调整“删除/添加重复行”浮标位置
     // 彭国辉 2008-01-11
     var  _tb_detail  =  document.getElementById( ' detail ' );
    
if  (_tb_detail)
        _tb_detail.onclick
= _setCurRow;

OK,收工!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值