首页 > 解决方案 > 数据视图不使用投影 DAC 刷新

问题描述

我正在使用 Kit Assembly Graph,它使用了 INKITRegister 投影类,我创建了另一个 DAC INKITRegisterExt(一个单独的数据库表),它使用 INKITRegister 作为父级,但是当我单击导航按钮时,扩展类数据没有按照选定的 INKitRegister 显示。

例如,如果选择“A”套件组件,则扩展表显示“A”相关数据,但是当我单击导航时,它显示“A”数据而不是另一个选定的 INKitRegister 数据。but when a is selected then it blankout extension fields, but once "A" data is shown then it always shown data "A" data not another navigate kit assembly data, what am i doing wrong?

我在扩展图中使用了以下扩展表查询

    public PXSelect<INRegisterKitAssemblyExt,
                      Where<INRegisterKitAssemblyExt.refNbr,
                       Equal<Current<INKitRegister.refNbr>>, And<INRegisterKitAssemblyExt.kitRevisionID, Equal<Current<INKitRegister.kitRevisionID>>>>> RegisterAssemblyExtDtl;

protected virtual void INKitRegister_KitInventoryID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) {
    if(RegisterAssemblyExtDtl.Current == null) {
                RegisterAssemblyExtDtl.Insert();
            }
 RegisterAssemblyExtDtl.Current.Text = "Value of A";
}

标签: acumaticaacumatica-kb

解决方案


PXSelect 数据视图的主 DAC 不应位于扩展类上:

PXSelect<INRegisterKitAssemblyExt, ...

您应该改用扩展的基本 DAC:

PXSelect<INKitRegister, ..

INKitRegister 是 INRegister DAC 上的投影 DAC:

[PXPrimaryGraph(typeof(KitAssemblyEntry))]
[PXCacheName(Messages.INKit)]
[PXProjection(typeof(Select2<INRegister, InnerJoin<INTran, On<INRegister.FK.KitTran>>>), 
              Persistent=true)]
[Serializable]
public partial class INKitRegister : IBqlTable, ILSPrimary

您正在尝试将数据库绑定字段添加到 INKitRegister 投影,但不存在 INKitRegister 数据库表:

public class INRegisterKitAssemblyExt: PXCacheExtension<INKitRegister>

您应该在投影使用的实际数据库表 INRegister 上使用 DAC 扩展来保存字段:

public class INRegisterKitAssemblyExt: PXCacheExtension<INRegister>

推荐阅读