我正在尝试在通过Contact BLC中的操作ConvertToBAccount()创建的全新BAccount对象上设置自定义字段。我已经尝试了很多不同的事情,包括覆盖操作并尝试在操作完成后设置对象的值并导航到BAccount BLC。我发现我无法在覆盖上设置值,因为在用户手动保存之前数据库中没有记录,当我尝试在操作后设置值时,它会设置字段,但不会显示BAccount BLC完成加载后屏幕上的新值。
如何为通过Contacts BLC上的ConvertToBAccount()操作创建的新BAccount设置扩展字段?
DAC扩展:
public class BAccountExt : PXCacheExtension<PX.Objects.CR.BAccount>
{
#region UsrHomeCampus
[PXDBInt]
[PXUIField(DisplayName="Home Campus")]
[PXSelector(typeof(Search<PX.Objects.GL.Branch.branchID>),
typeof(PX.Objects.GL.Branch.branchCD),
SubstituteKey = typeof(PX.Objects.GL.Branch.branchCD))]
public virtual int? UsrHomeCampus { get; set; }
public abstract class usrHomeCampus : IBqlField { }
#endregion
}
BLC代码:
public class BusinessAccountMaint_Extension : PXGraphExtension<BusinessAccountMaint>
{
#region Event Handlers
protected void Contact_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
Contact row = (Contact)e.Row;
if (row.ContactID > 0 && Base.CurrentBAccount.Current.BAccountID < 0)
{
Base.CurrentBAccount.Current.GetExtension<BAccountExt>().UsrHomeCampus = row.GetExtension<ContactExt>().UsrHomeCampus;
//Save record in database
Base.Actions.PressSave();
//Cause page refresh
Base.Actions.PressCancel();
}
}
#endregion
}
答案 0 :(得分:2)
当按BAccount
方法从联系人创建ConvertToBAccount()
时,新创建的BAccountID
的{{1}}被设置为BAccount
&#39}。 s Contact
字段。
你应该通过查询类似的东西来获取BAccount
BAccountID
然后得到你这样的扩展名:
BAccount bAccount = PXSelect<BAccount,Where<BAccount.bAccountID,Equal<Required<BAccount.bAccountID>>>.Select(graph,contactObject.BAccountID);
并设置所需的值,然后以某种方式更新BAccount:
BAccountExt acc = PXCache<BAccount>.GetExtension<BAccountExt>(bAccount);