acumatica - 如何获取选择器替换键/描述值
问题描述
假设我有一个 DAC 记录,比如 SOOrder,我有一个字段,比如 customerID,其中有一个整数字段上定义的 PXSelectorAttribute,它有一个 SubstitueKey = 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
}
推荐阅读
- java - 如何在应用程序关闭时保存当前的 WebView URL 并在下次重新打开应用程序时将其加载回来?
- c# - 如何重新排列txt文件中的数据
- c# - 从字符串转换为十六进制数组
- php - 为什么脚本使用不同的虚拟主机表现不同?
- excel - 加载项全局声明
- c++ - 如何在 JSON 中为现代 C++ 迭代 JSON
- ios - UIImagePickerController 在allowEditing中隐藏正方形选择
- numpy - drawcontours中的opencv错误 - 眼睛运动检测python代码
- python - 如何在for循环中将值放在迭代列表的后面?
- android - EditText 没有关注带有 NestedScrollView 的 CoordinatorLayout