DAC字段上的PXSelector导致列过滤器问题

时间:2018-10-11 14:26:50

标签: acumatica

我有一个DAC,其DAC从table1到FK1到Table1ID,从table2到FK2到Table2ID。我在这些字段上添加了PXSelector以显示友好名称而不是ID号。当用户过滤Table2ID并在屏幕上添加新记录,并在各列之间使用选项卡输入信息时,Table1ID列的值消失了。用户可以将值添加回该列,但是我试图弄清楚为什么消失了。如果我从Table2ID字段中删除PXSelector,则一切正常。 PXSelector是一个简单的选择,可以检查IsActive是否为真。

   <px:PXGridColumn DataField="AdministrationRouteID" DisplayMode="Text" Width="100px" CommitChanges="True" />
   <px:PXGridColumn DataField="MedicationID" DisplayMode="Text" Width="200px" CommitChanges="True" />


    public abstract class administrationRouteID : PX.Data.IBqlField
    {
    }
    protected int? _AdministrationRouteID;
    [PXDBInt()]
    [PXDefault()]
    [PXSelector(typeof(Search<SsAhAdministrationRoute.administrationRouteID,
        Where<SsAhAdministrationRoute.isActive, Equal<True>>>), DescriptionField = typeof(SsAhAdministrationRoute.name))]
    [PXUIField(DisplayName = "Administration Route")]
    public virtual int? AdministrationRouteID
    {
        get
        {
            return this._AdministrationRouteID;
        }
        set
        {
            this._AdministrationRouteID = value;
        }
    }



    public abstract class medicationID : PX.Data.IBqlField
    {
    }
    protected int? _MedicationID;
    [PXDBInt()]
    [PXDefault()]
    [PXSelector(typeof(Search<SsAhMedication.medicationId,
        Where<SsAhMedication.isActive, Equal<True>>>), DescriptionField = typeof(SsAhMedication.name))]
    [PXUIField(DisplayName = "Medication Name")]
    public virtual int? MedicationID
    {
        get
        {
            return this._MedicationID;
        }
        set
        {
            this._MedicationID = value;
        }
    }

2 个答案:

答案 0 :(得分:1)

听起来您只需要使用SubstituteKey属性在选择器上指示CD字段即可。下面的示例假定SsAhAdministrationRoute.administrationRouteCD是与SsAhAdministrationRoute.administrationRouteID ID键值有关的CD用户友好值。

[PXSelector(typeof(Search<SsAhAdministrationRoute.administrationRouteID,
        Where<SsAhAdministrationRoute.isActive, Equal<True>>>), 
        DescriptionField = typeof(SsAhAdministrationRoute.name),
        SubstituteKey = typeof(SsAhAdministrationRoute.administrationRouteCD))]

答案 1 :(得分:1)

检查CommitChanges =“ true”仅适用于需要该功能的GridColumns。如果不需要,请尝试从选择器列中删除CommitChanges =“ true”。网格上的SyncPosition =“ true”可能也有帮助,尤其是在数据输入过程中在行与行之间跳跃时。