如何在加载或打开时填充表单

时间:2018-01-11 23:00:43

标签: acumatica

我有一个表单视图的屏幕。此表单由表/ DAC中的字段填充,键字段为UserID - 在Acumatica users表中找到的guid类型。我想要的是表单根据系统中找到的用户ID(即AccessInfo.UserID值)提取已保存的记录。我根据用户ID保存了一条记录 - 我已经在代码中尝试了各种事件和缓存更新,但没有任何效果。我确定这是一种简单的方法,但我没有看到它。

简短的故事:有没有办法在打开表单时填充表单上的所有字段,根据在系统中找到的UserID获取该行?

1 个答案:

答案 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">