簡體   English   中英

如何使用 X++ 根據其他字段自動填充字段?

[英]How can I auto populate a field based on other fields with X++?

我正在使用 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;

如果有人可以幫助我,我將不勝感激。

您可以將事件處理程序附加到表單 DataSource 上的 Field1、Field2 和 Field3 Modified事件,當它被觸發時,只需檢索當前記錄,連接這些值並將它們寫入Details字段。 然后,DataSource 將處理將所有這些值插入或更新到數據庫記錄中:

[
    FormDataFieldEventHandler(formDataFieldStr(InventSite, InventSite, Field1), FormDataFieldEventType::Modified),
    FormDataFieldEventHandler(formDataFieldStr(InventSite, InventSite, Field2), FormDataFieldEventType::Modified),
    FormDataFieldEventHandler(formDataFieldStr(InventSite, InventSite, 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表中創建的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM