FormObservableLink works in data source extensions

FormObservableLink class is useful for refreshing display and edit methods in D365FO. You create an instance variable of FormObservableLink type in a form, initialize it and call its observe() method in display/edit methods that you need to refresh on demand. When the refresh is required, you call markChanged() method of FormObservableLink and the system will rerun the methods and display new values. You can find more details in AX 7. Display methods and Form Observability, for instance.

I wondered if I can do the same in a data source extension and I wasn’t really sure that it would work. But it does – and the implementation is virtually the same as when building a whole form.

Here is a simple example:

[ExtensionOf(formDataSourceStr(smmContactPerson, ContactPerson))]
final class MySmmContactPerson_ContactPersonDs_Extension
{
    // Declare and initalize FormObservableLink
    private FormObservableLink observableLink = new FormObservableLink();
 
    edit NoYes myMethod(boolean _set, ContactPerson _contactPerson, NoYes _newValue)
    {
        // This says that observableLink will be able to refresh myMethod()
        observableLink.observe();
        ...
    }
 
    void refreshMethodsWhenSomethingHappened()
    {
        // Here we trigger a refresh
        observableLink.markChanged();
    }
}

3 Comments

  1. Hi, How do we call this in form Control?

    The Edit method should be a method in Form control. and markedchanged() called from Modified as in standard. How should we set the property?.

    Would be great if you could help or suggest. Thanks.

  2. Hi,

    The Edit method should be a method in Form control, so How do we call this in form Control? and markedchanged() should be called from Modified methosas in standard. How can we set the property?.

    Would be great if you could help or suggest. Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *