预留窗体的问题

问题描述
操作路径:
应收账款->销售订单->销售订单行->库存->预留
一张销售订单有多行,选中其中一行(不要选的一行,要不然问题看不出来),点击库存->预留.
124.png
做预留动作前的窗体如下图所示:
345.png
如果在预留字段填写1,然后保存,预留界面就会变成下图所示的界面:
346.png
如果看现有量页签就会发现产品已经不是Farseer而是00000002_162了,也就是说在预留窗体中做预留操作后,销售订单行的当前行会跳到第一行,导致预留窗体中的相应数据也被改写成销售订单第一行的物料对应的数据,这样操作起来非常不方便,我觉得这应该算是一个bug。
原因
由于每次做预留动作时都会通过调用SalesTable的doRefresh方法刷新SalesTable窗体,在该方法中调用了salesLine_ds.research()方法,该方法会导致excuteQuery()方法的调用,重新查询SalesLine表中的记录,这时当前行会重新定位到第一行。
解决方法
在调用salesLine_ds.research()方法前记住当前行,在重新查询后定位到原来那一行。将代码修改如下:
None.gifvoid doRefresh()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
//Farseer Begin
InBlock.gif
    SalesLine origSalesLine;
InBlock.gif    
//Farseer End
InBlock.gif
    ;
InBlock.gif    salesTable_ds.reread();
InBlock.gif    salesTable_ds.refresh();
InBlock.gif
InBlock.gif    
//Farseer Begin
InBlock.gif
    origSalesLine.RecId = salesLine.RecId;
InBlock.gif    
//Farseer End
InBlock.gif
    
InBlock.gif    salesLine_ds.research();
InBlock.gif    
InBlock.gif    
//Farseer Begin
InBlock.gif
    salesLine_ds.findRecord(origSalesLine);
InBlock.gif    
//Farseer End
InBlock.gif
    interCompanyPurchSalesReference_ds.executeQuery();
ExpandedBlockEnd.gif}

None.gif


转载于:https://www.cnblogs.com/Farseer1215/archive/2007/07/04/806236.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值