如何获取选择器替换键/描述值
How to get Selector Substitute Key / Description values
假设我有一个 DAC 记录,比如 SOOrder,我有一个像 customerID 这样的字段,其中在整数字段上定义了一个 PXSelectorAttribute,它有一个 SubstitueKey = typeof(Customer.acctCD) 和 Description =类型(Customer.acctName)。有什么方法可以在不对选择器执行 PXSelect 的情况下获取该记录的替代键/描述字段的值 table?
谢谢
-凯尔
请注意,由于未指定版本,因此我的示例是针对 2020r2
编码的
以下示例在 Invoice/Memo 上的位置发生更改时将 Invoice/Memo 的描述更新为位置的 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, 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(object value) 将 return 等同于后端的 UI 值。这很好,因为这样您就可以对下拉菜单和选择器使用一种方法,但我似乎看不出如何使用此
获取描述字段
假设我有一个 DAC 记录,比如 SOOrder,我有一个像 customerID 这样的字段,其中在整数字段上定义了一个 PXSelectorAttribute,它有一个 SubstitueKey = typeof(Customer.acctCD) 和 Description =类型(Customer.acctName)。有什么方法可以在不对选择器执行 PXSelect 的情况下获取该记录的替代键/描述字段的值 table?
谢谢 -凯尔
请注意,由于未指定版本,因此我的示例是针对 2020r2
编码的以下示例在 Invoice/Memo 上的位置发生更改时将 Invoice/Memo 的描述更新为位置的 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, 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(object value) 将 return 等同于后端的 UI 值。这很好,因为这样您就可以对下拉菜单和选择器使用一种方法,但我似乎看不出如何使用此
获取描述字段