首页 > 解决方案 > 在 acumatica 中,如何获取选择器的值并使用它来填充另一个字段?

问题描述

如下图所示,我想尝试将 Selector 的值传递给 Attention 字段。我正在努力做到这一点,以便每当我选择一个新的选择器值时,Attention 字段都将使用选择器的值进行更新。

联系人选择

上图中的联系人选择器是一个自定义字段,所以我试图通过它的扩展来访问它。但是,我似乎无法让它工作。

这是显示字段设置方式的数据访问屏幕:

数据访问屏幕


这是代码,因此您可以在需要时获取它:

[PXDBString(50)]
[PXUIField(DisplayName="Contact")]
[PXSelector(typeof(Search2<Contact.displayName,
LeftJoin<BAccount, On<BAccount.bAccountID, Equal<Contact.bAccountID>>>,
Where<Contact.contactType, Equal<ContactTypesAttribute.person>>>))]
[PXRestrictor(typeof(
    Where<Current<PMContact.customerID>,
            Like<Contact.bAccountID>>), "")]

以下是我尝试获取扩展名的两次尝试。我尝试在各种事件中使用这些代码;RowSelected、RowUpdated、FieldUpdated。似乎没有任何效果,这显然意味着我没有正确抓住扩展,但我不确定还有什么可以尝试的。

尝试 1

protected void PMContact_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{  
   var row = (PMContact)e.Row;

   if (row == null) return;

   PMContactExt rowExt = row.GetExtension<PMContactExt>();

   if (rowExt != null) {
     row.Attention = rowExt.UsrContactSelect;
   }   
}

尝试 2

protected void PMContact_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
      
   var row = (PMContact)e.Row;

   if (row == null) return;

   PMContact items = (PMContact)Base.ItemSettings.Current;
   var itemExt = PXCache<PMContact>.GetExtension<PMContactExt>(items);
      
   row.Attention = itemExt.UsrContactSelect;  
} 

这次尝试给了我关于 ItemSettings 部分的错误:

\App_Code\Caches\ProjectEntry.cs(43):错误 CS1061:“ProjectEntry”不包含“ItemSettings”的定义,并且找不到接受“ProjectEntry”类型的第一个参数的可访问扩展方法“ItemSettings”(你是缺少 using 指令或程序集引用?)

我有点坚持我还能尝试什么来实现这一点。

你有什么其他的建议?:)

标签: c#acumatica

解决方案


非常感谢@Hugues 和@Robert 的帮助!

正如 Hugues 所提到的,我的自定义字段有 CommitChanges=False,所以我将其更改为 true,瞧,它起作用了!

使用 RowSelected 事件效果很好,但我接受了 Robert 的建议并将其更改为 FieldUpdated 以确保我做的事情更合适。

这是我在触发事件时使用的代码:

protected void PMContact_UsrContactSelect_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{  
   var row = (PMContact)e.Row;

   if (row == null) return;

   PMContactExt rowExt = row.GetExtension<PMContactExt>();

   if (rowExt != null) {
     row.Attention = rowExt.UsrContactSelect;
   }   
}

再次非常感谢!这个问题一直很顽固:D


推荐阅读