【问题标题】:PO Line Account selector selection doesn't display in field订单行帐户选择器选择不显示在字段中
【发布时间】:2020-08-31 21:58:18
【问题描述】:

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

[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 值,我遗漏了什么或做错了什么?

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    假设您的其余自定义正确处理了覆盖并且选择器本身可以工作(我认为这就是您所说的)...如果您需要显示 AccountCD,您应该添加 SubstituteKey = typeof(Account.accountCD)。没有它,选择器现在设置为显示 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”是要选择的值。如果您想指定要在 PXSelector 中显示的字段(如果您的意图是显示实际的选择器),则可以添加后续 typeof() 引用。

    SubstituteKey = typeof(DAC Field) 改变选择器的显示以显示指定字段而不是实际值。选择recordID字段并替换recordCD字段是很常见的。

    DescriptionField 显示在显示值之后指定的字段(特别选择的字段或 SubstituteKey 字段,如果指定)。我可能是错的,但我不相信这会显示选择器何时显示在网格中。我相信它只适用于表单字段,例如将网格行切换到表单视图。

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

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

    【讨论】:

    • 感谢您的详细回复。我应该提到我已经尝试过使用您提到的 SubstituteKey,并且我仅在尝试 misc 时添加了 SelectorMode。让它工作的东西。可以肯定的是,我按照您的建议进行了验证,但仍然无法正常工作。选择器本身按我的预期工作,并根据输入的订单行数据显示数据,但选择后不显示所选的 AccountCD 值。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2018-12-30
      • 1970-01-01
      相关资源
      最近更新 更多