我有一个表单视图的屏幕。此表单由表/ DAC中的字段填充,键字段为UserID - 在Acumatica users表中找到的guid类型。我想要的是表单根据系统中找到的用户ID(即AccessInfo.UserID值)提取已保存的记录。我根据用户ID保存了一条记录 - 我已经在代码中尝试了各种事件和缓存更新,但没有任何效果。我确定这是一种简单的方法,但我没有看到它。
简短的故事:有没有办法在打开表单时填充表单上的所有字段,根据在系统中找到的UserID获取该行?
答案 0 :(得分:0)
我已经使用各种方法根据上下文和用例初始化字段。我相信FieldDefaulting事件或PXDefault属性可以工作。
对于简单初始化,您可以将BQL请求放在PXDefault类型参数中:
[PXDefault(typeof(Search<EPEmployee.bAccountID,
Where<EPEmployee.userID, Equal<Current<AccessInfo.userID>>>>),
PersistingCheck = PXPersistingCheck.Nothing)]
对于更复杂的初始化,请跳过属性中的BQL:
[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
使用FieldDefaulting事件处理程序初始化值:
public virtual void DAC_UserID_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
{
e.NewValue = [...];
}
在正确初始化字段之后,我认为您所要做的就是设置DAC主视图的Current属性以导航到该记录。
我设置了一个故障,我认为使用PageLoadBehavior属性修复了Current但我无法解释它的作用而不深入研究代码,因为它没有详细记录:
<px:PXDataSource PageLoadBehavior="GoFirstRecord">