Miklix

Dodaj metodę wyświetlania lub edycji za pomocą rozszerzenia w Dynamics 365

Opublikowano: 16 lutego 2025 11:55:50 UTC

W tym artykule wyjaśniam, jak za pomocą rozszerzenia klasy dodać metodę wyświetlania do tabeli i formularza w Dynamics 365 for Operations, podając również przykłady kodu X++.


Ta strona została przetłumaczona maszynowo z języka angielskiego, aby była dostępna dla jak największej liczby osób. Niestety, tłumaczenie maszynowe nie jest jeszcze dopracowaną technologią, więc mogą wystąpić błędy. Jeśli wolisz, możesz wyświetlić oryginalną angielską wersję tutaj:

Add Display or Edit Method via Extension in Dynamics 365

Chociaż planowanie wykorzystania metod wyświetlania i edycji w Dynamics powinno skłaniać do zastanowienia się nad możliwością zaprojektowania rozwiązania w inny sposób, to jednak czasami są one najlepszym rozwiązaniem.

W poprzednich wersjach Dynamics i Axapta tworzenie metod wyświetlania i edycji w tabelach i formularzach było bardzo proste, ale gdy niedawno musiałem utworzyć swoją pierwszą metodę edycji w Dynamics 365, odkryłem, że procedura jest nieco inna.

Istnieje ewidentnie kilka słusznych podejść, ale to, które uważam za najlepsze (zarówno pod względem intuicyjności, jak i ładności kodu), to użycie rozszerzenia klasy. Tak, możesz użyć rozszerzeń klasy, aby dodać metody do innych typów elementów niż klasy - w tym przypadku tabeli, ale działa to również w przypadku formularzy.

Najpierw utwórz nową klasę. Możesz nazwać ją jak chcesz, ale z jakiegoś powodu musi mieć sufiks „_Extension”. Powiedzmy, że musisz dodać metodę wyświetlania do CustTable, możesz na przykład nazwać ją MyCustTable_Extension.

Klasę należy ozdobić poleceniem ExtensionOf, aby system wiedział, co rozszerzasz, w następujący sposób:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
}

Teraz możesz zaimplementować metodę wyświetlania w tej klasie, tak jak robiłeś to bezpośrednio w tabeli we wcześniejszych wersjach Dynamics — „this” odwołuje się nawet do tabeli, więc możesz uzyskać dostęp do pól i innych metod.

Na przykład klasa z prostą (i zupełnie bezużyteczną) metodą wyświetlania, która po prostu zwraca numer konta klienta, mogłaby wyglądać następująco:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
    public display CustAccount displayAccountNum()
    {
        ;

        return this.AccountNum;
    }
}

Teraz, aby dodać metodę wyświetlania do formularza (lub rozszerzenia formularza, jeśli nie możesz edytować formularza bezpośrednio), musisz ręcznie dodać pole do formularza i upewnić się, że używasz prawidłowego typu (w tym przykładzie jest to ciąg znaków).

Następnie w kontrolce należy ustawić DataSource na CustTable (lub inną nazwę źródła danych CustTable), a DataMethod na MyCustTable_Extension.displayAccountNum (pamiętaj o uwzględnieniu nazwy klasy, w przeciwnym razie kompilator nie znajdzie metody).

I gotowe :-)

Aktualizacja: Nie jest już konieczne dołączanie nazwy klasy rozszerzenia podczas dodawania metody wyświetlania do formularza, ale w pierwotnym momencie publikacji tak było. Zostawiam tę informację tutaj na wypadek, gdyby niektórzy czytelnicy nadal korzystali ze starszych wersji.

Udostępnij na BlueskyUdostępnij na FacebookuUdostępnij na LinkedInUdostępnij na TumblrUdostępnij na XUdostępnij na LinkedInPrzypnij na Pintereście

Mikkel Bang Christensen

O autorze

Mikkel Bang Christensen
Mikkel jest twórcą i właścicielem miklix.com. Ma ponad 20-letnie doświadczenie jako profesjonalny programista komputerowy / programista oprogramowania i jest obecnie zatrudniony na pełny etat w dużej europejskiej korporacji IT. Kiedy nie bloguje, poświęca swój wolny czas na szeroki wachlarz zainteresowań, hobby i aktywności, co może w pewnym stopniu znaleźć odzwierciedlenie w różnorodności tematów poruszanych na tej stronie.