问题描述
我使用的是 D365 财务和运营。我有一个表单和四个字段。每次我输入这三个字段之一的新记录时,它们的值都应连接起来,并将组合文本放入第四个字段的“详细信息”字段。我想我需要为此使用 onupdateevent ,但我不知道如何。
我使用了 onmodifyingfield 事件处理程序,它可以工作,但仅当我输入并保存第二条记录时才有效。我的意思是我保存记录并且自动填充不起作用,但是当我保存第二条记录并刷新页面时,我可以看到第一条记录中的自动填充字段。这是我的代码;
[DataEventHandler(tableStr(InventSite),DataEventType::ModifyingField)]
public static void InventSite_onModifyingField(Common sender,DataEventArgs e)
{
MyTable myTable;
update_recordset mytable setting Details = MyTable.Field1 + "," + MyTable.Field2;
如果有人能帮我解决这个问题,我将不胜感激。
解决方法
您可以将事件处理程序附加到表单数据源上的 Field1、Field2 和 Field3 Modified
事件,当它被触发时,只需检索当前记录,连接这些值并将它们写入 Details
字段。然后 DataSource 将处理将所有这些值插入或更新到数据库记录中:
[
FormDataFieldEventHandler(formDataFieldStr(InventSite,InventSite,Field1),FormDataFieldEventType::Modified),FormDataFieldEventHandler(formDataFieldStr(InventSite,Field2),Field3),FormDataFieldEventType::Modified)
]
public static void Field1_OnModified(FormDataObject sender,FormDataFieldEventArgs e)
{
// get the form DataSource
FormDataSource dataSource = sender.datasource();
// get current record
InventSite inventSite = dataSource.cursor();
// contatenate string values
str details = strFmt("%1,%2,%3",inventSite.Field1,inventSite.Field2,inventSite.Field3);
// update field value
inventSite.Details = details;
}
注意:我不明白您的代码示例中的 MyTable myTable
缓冲区是什么,但在这种情况下,通过查看 DataEventHandler
,我认为所有四个字段都是在 InventSite
表。