微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取选择器替代键/描述值

如何解决如何获取选择器替代键/描述值

假设我有一个 DAC 记录,比如 SOOrder,我有一个字段,比如 customerID,其中在整数字段上定义了一个 PXSelectorAttribute,它有一个 SubstitueKey = typeof(Customer.acctCD) 和 Description = typeof(Customer .acctName)。有什么方法可以获取该记录的替代键/描述字段的值,而无需对选择器表执行 PXSelect?

谢谢 -凯尔

解决方法

请注意,由于未指定版本,因此我的示例是针对 2020r2 编码的

以下是在发票/备忘录上的位置更改时将发票/备忘录的描述更新到位置的 CD 和描述字段 [CD: Descr] 的示例。我相信您正在寻找的函数是 PXSelectorAttribute.Select<SELECTOR_FIELD>(SELECTOR_FIELD_CACHE,SELECTOR_FIELD_RECORD) AS SELECTOR_TARGET_DAC

public class ArInvoiceEntrySoExt : PXGraphExtension<ARInvoiceEntry>
{
    #region Event Handlers
    #region ArInvoice
    public virtual void _(Events.FieldUpdated<ARInvoice.customerLocationID> e,PXFieldUpdated del)
    {
        var inv = e.Row as ARInvoice;
        del?.Invoke(e.Cache,e.Args);
        if (inv != default)
        {
            var loc = PXSelectorAttribute.Select<ARInvoice.customerLocationID>(e.Cache,inv) as Location;
            e.Cache.SetValueExt<ARInvoice.docDesc>(inv,string.Format("{0}: {1}",loc?.LocationCD,loc?.Descr));
        }
    }
    #endregion
    #endregion
}

另一种方法是,您可以使用 PXSelectorAttribute.GetField(SELECTOR_FIELD_CACHE,SELECTOR_FIELD_RECORD,"SELECTOR_FIELD_NAME",SELECTOR_FIELD_VALUE,"SELECTOR_TARGET_FIELD_NAME") 从选择器的目标记录中获取特定字段。例如,以下代码使用此替代方法执行与上述相同的操作:

public class ArInvoiceEntrySoExt : PXGraphExtension<ARInvoiceEntry>
{
    #region Event Handlers
    #region ArInvoice
    public virtual void _(Events.FieldUpdated<ARInvoice.customerLocationID> e,PXSelectorAttribute.GetField(e.Cache,inv,"customerLocationID",inv.CustomerLocationID,"LocationCD"),"Descr")));
        }
    }
    #endregion
    #endregion
}
,

我还被告知了另一种可以使用的方法

PXFieldState.UnwrapValue(object value) 将返回等效于后端值的 UI。这很好,因为这样您就可以对下拉菜单和选择器使用一种方法,但我似乎看不到如何使用此方法获取描述字段

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。