我们有一个名为UsrNonRelatedScanField的测试DAC,它有两个字段: OrderNbr 和 ScanStatus 。
这是我们获取正确的ordernbr并将其分配给SOOrderExt字段的简单查询:
NonRelatedScanField lastScan = PXSelect<NonRelatedScanField,
Where<NonRelatedScanField.orderNbr,
Equal<Required<SOOrder.orderNbr>>>>.Select(Base, row.OrderNbr);
if(lastScan != null)
{
rowExt.UsrNonRelatedScanField = lastScan.ScanStatus;
}
此逻辑保存在SOOrder_RowSelecting()方法中。
完整方法实施:
protected virtual void SOOrder_RowSelecting(PXCache sender, PXRowSelectingEventArgs e)
{
SOOrder row = (SOOrder)e.Row;
if (row == null) return;
SOOrderExt rowExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(row);
NonRelatedScanField lastScan = PXSelect<NonRelatedScanField,
Where<NonRelatedScanField.orderNbr,
Equal<Required<SOOrder.orderNbr>>>>.Select(Base, row.OrderNbr);
if (lastScan != null)
{
rowExt.UsrNonRelatedScanField = lastScan.ScanStatus;
}
}
预期结果:从lastScan DAC获取当前订单扫描状态
实际结果:仅在打开的初始订单上正确填充。选择其他订单时,旧值将持续,除非我手动刷新页面。手动刷新时,会输入正确的数据。
我过去在使用BQL查询时没有遇到任何问题,此特定查询的行为不符合预期。
谢谢