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



假设我有一个DAC记录,如SOOrder,我有一个字段,如customerID,其中有一个PXSelectorAttribute定义在一个整数字段,它有一个replacekey = typeof(Customer.acctCD)和Description = typeof(Customer.acctName)。是否有一些方法,我可以得到替代键/描述字段的值为该记录不做一个PXSelect对选择器表?

谢谢凯尔

注意,由于没有指定版本,我的示例是针对2020r2进行编码的

下面是一个示例,当发票/备忘录上的位置发生更改时,将发票/备忘录的描述更新到位置的CD和Descr字段[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, 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}",
PXSelectorAttribute.GetField(e.Cache, inv, "customerLocationID", inv.CustomerLocationID, "LocationCD"),
PXSelectorAttribute.GetField(e.Cache, inv, "customerLocationID", inv.CustomerLocationID, "Descr")));
}
}
#endregion
#endregion
}

我还听说了另一种可以使用的方法

PXFieldState。UnwrapValue(对象值)将返回与后端值等价的UI。这很好,因为你可以使用一个方法同时下拉和选择器,但我似乎不知道如何获得描述字段使用这个

最新更新