采购订单行帐户选择器选择不显示在字段中

PO Line Account selector selection doesn't display in field

我有一个自定义覆盖采购订单屏幕上的采购订单行帐户字段下拉查找选择器。它像我想要的那样填充,但从下拉列表中选择的帐户在选择后不会显示在网格字段中。这是:

[PXSelector(
    typeof(Search5<Account.accountID,
        InnerJoin<PMCostBudget, On<Account.accountGroupID, Equal<PMCostBudget.accountGroupID>>>,
        Where2<Where<PMCostBudget.projectID, Equal<Current<POLine.projectID>>, Or<Current<POLine.projectID>, IsNull>>,
            And2<Where<PMCostBudget.projectTaskID, Equal<Current<POLine.taskID>>, Or<Current<POLine.taskID>, IsNull>>,
            And2<Where<PMCostBudget.costCodeID, Equal<Current<POLine.costCodeID>>, Or<Current<POLine.costCodeID>, IsNull>>,
            And<Where<Current<POLine.lineType>, Equal<POLineType.nonStock>, Or<Current<POLine.lineType>, IsNull>>>>>>,
        Aggregate<GroupBy<Account.accountID>>,
        OrderBy<Asc<Account.accountCD>>>),
        DescriptionField = typeof(Account.description),
        Filterable = false, 
        SelectorMode = PXSelectorMode.DisplayModeValue
        )]

它基本上过滤在同一采购订单行上选择的行类型、项目、任务和成本代码。我遗漏了什么或做错了什么才能显示所选的 AccountCD 值?

假设您的其余定制正确处理了覆盖并且 selector 本身有效(我认为这就是您所说的)...如果您需要显示 AccountCD,您应该添加 SubstituteKey =类型(Account.accountCD)。没有它,selector 现在设置为显示 AccountID。

[PXSelector(
    typeof(Search5<Account.accountID,
        InnerJoin<PMCostBudget, On<Account.accountGroupID, Equal<PMCostBudget.accountGroupID>>>,
        Where2<Where<PMCostBudget.projectID, Equal<Current<POLine.projectID>>, Or<Current<POLine.projectID>, IsNull>>,
            And2<Where<PMCostBudget.projectTaskID, Equal<Current<POLine.taskID>>, Or<Current<POLine.taskID>, IsNull>>,
            And2<Where<PMCostBudget.costCodeID, Equal<Current<POLine.costCodeID>>, Or<Current<POLine.costCodeID>, IsNull>>,
            And<Where<Current<POLine.lineType>, Equal<POLineType.nonStock>, Or<Current<POLine.lineType>, IsNull>>>>>>,
        Aggregate<GroupBy<Account.accountID>>,
        OrderBy<Asc<Account.accountCD>>>),
        SubstituteKey = typeof(Account.accountCD),
        DescriptionField = typeof(Account.description),
        Filterable = false, 
        SelectorMode = PXSelectorMode.DisplayModeValue
        )]

在 PXSelector 上,第一个“typeof”是要 selected 的值。如果要指定要在 PXSelector 中显示的字段(如果您的意图是显示实际的 selector),则可以添加后续的 typeof() 引用。

SubstituteKey = typeof(DAC Field) 更改 selector 的显示以显示指定字段而不是实际值。 select recordID 字段替换 recordCD 字段是很常见的。

DescriptionField 显示在显示值之后指定的字段(具体 selected 字段或 SubstituteKey 字段(如果指定)。我可能是错的,但我不相信这会显示 selector 显示在网格中。我相信它仅适用于表单字段,例如将网格行切换为表单视图。

Filterable 是可选的,但它允许您在 select 中设置过滤器,例如当您有大量记录要检索并且可能希望快速定位某个值时。我相信使用它会产生一些开销,因此像您一样设置为 false 可能会带来很小的性能提升。

我以前从未使用过 SelectorMode,所以你在这里教了我一些新东西!如果添加 SubstituteKey 不能解决您的问题,您可以尝试删除 SelectorMode 行以查看是否可以解决您的问题。顺便说一下,这可能会改变 select 的行为,或者改变我所期望的。

Acumatica 支持的建议解决了我的问题。由于帐户 ID 是分段键,因此我需要手动将 PXSegmentedValue 更改为 .ASPX 中的 PXSelector 才能使其正常工作。我还通过在覆盖中使用 PXDimensionSelector 而不是普通 PXSelector 使其在没有更改的情况下工作。

    [PXDimensionSelector(AccountAttribute.DimensionName,
        typeof(Search5<Account.accountID>...